diff --git a/build/common/worker/docker-entrypoint.sh b/build/common/worker/docker-entrypoint.sh index 5b68eec4..2ad58b9c 100755 --- a/build/common/worker/docker-entrypoint.sh +++ b/build/common/worker/docker-entrypoint.sh @@ -71,6 +71,10 @@ fi # Allow user process to create files in logs directory chown -R frappe:frappe /home/frappe/frappe-bench/logs +# symlink node_modules +ln -sfn /home/frappe/frappe-bench/sites/assets/frappe/node_modules \ + /home/frappe/frappe-bench/apps/frappe/node_modules + if [ "$1" = 'start' ]; then configureEnv checkConnection diff --git a/build/frappe-nginx/Dockerfile b/build/frappe-nginx/Dockerfile index fc17a7b6..d360f87f 100644 --- a/build/frappe-nginx/Dockerfile +++ b/build/frappe-nginx/Dockerfile @@ -1,5 +1,18 @@ -ARG NODE_IMAGE_TAG=12-prod -FROM bitnami/node:${NODE_IMAGE_TAG} +# This image uses nvm and same base image as the worker image. +# This is done to ensures that node-sass binary remains common. +# node-sass is required to enable website theme feature used +# by Website Manager role in Frappe Framework +FROM bitnami/python:3.7-prod + +ENV NVM_DIR=/root/.nvm +ENV NODE_VERSION=12.18.3 +ENV PATH="/root/.nvm/versions/node/v${NODE_VERSION}/bin/:${PATH}" +RUN install_packages wget \ + && wget https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh \ + && chmod +x install.sh \ + && ./install.sh \ + && . "$NVM_DIR/nvm.sh" && nvm install ${NODE_VERSION} \ + && nvm use v${NODE_VERSION} && npm install -g yarn WORKDIR /home/frappe/frappe-bench RUN mkdir -p /home/frappe/frappe-bench/sites \ @@ -12,9 +25,6 @@ RUN mkdir -p apps sites/assets/css \ && cd apps \ && git clone --depth 1 https://github.com/frappe/frappe --branch $GIT_BRANCH -COPY build/frappe-nginx/generate_standard_style_css.js \ - /home/frappe/frappe-bench/apps/frappe/generate_standard_style_css.js - COPY build/frappe-nginx/build.sh /build.sh RUN /build.sh RUN node --version \ diff --git a/build/frappe-nginx/build.sh b/build/frappe-nginx/build.sh index 370e2104..f9b01dbb 100755 --- a/build/frappe-nginx/build.sh +++ b/build/frappe-nginx/build.sh @@ -8,16 +8,11 @@ function nodeCleanUp() { cd /home/frappe/frappe-bench/apps/frappe yarn yarn run production -yarn add nunjucks -D if [[ "$GIT_BRANCH" =~ ^(version-12|version-11)$ ]]; then nodeCleanUp else - node generate_standard_style_css.js \ - frappe/website/doctype/website_theme/website_theme_template.scss > \ - /home/frappe/standard_templates_string - node generate_bootstrap_theme.js \ - /home/frappe/frappe-bench/sites/assets/css/standard_style.css \ - "$(cat /home/frappe/standard_templates_string)" nodeCleanUp + # remove this when frappe framework moves this to dependencies from devDependencies + yarn add node-sass fi diff --git a/build/frappe-nginx/generate_standard_style_css.js b/build/frappe-nginx/generate_standard_style_css.js deleted file mode 100644 index 275ab47d..00000000 --- a/build/frappe-nginx/generate_standard_style_css.js +++ /dev/null @@ -1,14 +0,0 @@ -const nunjucks = require("nunjucks"); - -const templatePath = process.argv[2]; -const pathArray = templatePath.split("/"); -const templateFile = pathArray.pop(); -const templateDir = pathArray.join("/"); - -nunjucks.configure(templateDir); -const rendered = nunjucks.render(templateFile, { - button_rounded_corners: true, - font_properties: "300,600", -}); - -console.log(rendered.replace(/\n/gm, "\\n")); diff --git a/build/frappe-worker/Dockerfile b/build/frappe-worker/Dockerfile index bcf78612..68226660 100644 --- a/build/frappe-worker/Dockerfile +++ b/build/frappe-worker/Dockerfile @@ -4,6 +4,9 @@ RUN useradd -ms /bin/bash frappe ARG GIT_BRANCH=develop ENV PYTHONUNBUFFERED 1 +ENV NVM_DIR=/home/frappe/.nvm +ENV NODE_VERSION=12.18.3 +ENV PATH="/home/frappe/.nvm/versions/node/v${NODE_VERSION}/bin/:${PATH}" # Install dependencies WORKDIR /home/frappe/frappe-bench @@ -27,7 +30,17 @@ RUN install_packages \ libpq-dev \ && wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.buster_amd64.deb \ && dpkg -i wkhtmltox_0.12.5-1.buster_amd64.deb && rm wkhtmltox_0.12.5-1.buster_amd64.deb \ - && apt-get purge -y wget && apt-get autoremove -y + && wget https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh \ + && apt-get purge -y wget && apt-get autoremove -y \ + && chown -R frappe:frappe /home/frappe + +USER frappe +# Install nvm with node +RUN bash install.sh \ + && . "$NVM_DIR/nvm.sh" \ + && nvm install ${NODE_VERSION} \ + && nvm use v${NODE_VERSION} \ + && nvm alias default v${NODE_VERSION} # Create frappe-bench directories RUN mkdir -p apps logs commands /home/frappe/backups @@ -39,6 +52,7 @@ RUN python -m venv env \ && git clone --depth 1 -o upstream https://github.com/frappe/frappe --branch ${GIT_BRANCH} \ && pip3 install --no-cache-dir -e /home/frappe/frappe-bench/apps/frappe +USER root # Copy scripts and templates COPY build/common/commands/* /home/frappe/frappe-bench/commands/ COPY build/common/common_site_config.json.template /opt/frappe/common_site_config.json.template @@ -52,7 +66,7 @@ RUN ln -s /usr/local/bin/docker-entrypoint.sh / # backwards compat WORKDIR /home/frappe/frappe-bench/sites # Set ownership of sites directory -RUN chown -R frappe:frappe /home/frappe/frappe-bench/sites /home/frappe/backups +RUN chown -R frappe:frappe /home/frappe/frappe-bench/sites VOLUME [ "/home/frappe/frappe-bench/sites", "/home/frappe/backups" ]