From ae5979ee8f26c0d665a8009c2817b7a079a42b73 Mon Sep 17 00:00:00 2001 From: Davide Bortolami Date: Sun, 8 Mar 2020 18:37:26 +0000 Subject: [PATCH] Fixed node and python installation, local user --- build/bench/Dockerfile | 66 ++++++++++++++++++++++++++++++------------ 1 file changed, 47 insertions(+), 19 deletions(-) diff --git a/build/bench/Dockerfile b/build/bench/Dockerfile index b89141a0..77ae4997 100644 --- a/build/bench/Dockerfile +++ b/build/bench/Dockerfile @@ -2,8 +2,6 @@ FROM bitnami/minideb:latest LABEL author=frappé - -WORKDIR /home/frappe/frappe-bench RUN install_packages \ git \ wkhtmltopdf \ @@ -41,43 +39,73 @@ RUN install_packages \ fonts-cantarell \ # VSCode container requirements net-tools \ -# PYTHON + # PYTHON python3-dev \ python3-pip \ python3-setuptools \ - python3-tk - + python3-tk \ + python-virtualenv # Install wkhtmltox correctly RUN wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.stretch_amd64.deb RUN dpkg -i wkhtmltox_0.12.5-1.stretch_amd64.deb && rm wkhtmltox_0.12.5-1.stretch_amd64.deb +# Create new user with directory, add user to sudo group, allow passwordless sudo, switch to that user and change directory to user home directory +RUN useradd --no-log-init -r -m -g sudo frappe +RUN echo "frappe ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers +USER frappe +WORKDIR /home/frappe +# Install bench in the local user home directory +RUN pip3 install --user git+https://github.com/frappe/bench.git#egg=bench --no-cache + +# Export python executables for Dockerfile +ENV PATH=/home/frappe/.local/bin/:$PATH +# Export python executables for interactive shell +RUN echo "export PATH=/home/frappe/.local/bin/:\$PATH" >> /home/frappe/.bashrc + +# Print version and verify bashrc is properly sourced so that everything works in the Dockerfile +RUN bench --version +# Print version and verify bashrc is properly sourced so that everything works in the interactive shell +RUN bash -c "bench --version" -# Add frappe user and setup sudo -RUN groupadd -g 1000 frappe \ - && useradd -ms /bin/bash -u 1000 -g 1000 -G sudo frappe \ - && chown -R 1000:1000 /home/frappe # Install nvm with node -ENV NODE_VERSION=13.10.1 -RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash -ENV NVM_DIR=/root/.nvm +# !!! UPDATE PERIODICALLY WITH LATEST VERSIONS !!! +# https://nodejs.org/en/about/releases/ +# https://nodejs.org/download/release/latest-v10.x/ +# https://nodejs.org/download/release/latest-v12.x/ +# https://nodejs.org/download/release/latest-v13.x/ + +ENV NODE_VERSION=12.16.1 +ENV NODE_VERSION_FRAPPEV11=10.19.0 + +RUN wget https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh +RUN chmod +x install.sh +RUN ./install.sh + +ENV NVM_DIR=/home/frappe/.nvm RUN . "$NVM_DIR/nvm.sh" && nvm install ${NODE_VERSION} +RUN . "$NVM_DIR/nvm.sh" && nvm install ${NODE_VERSION_FRAPPEV11} RUN . "$NVM_DIR/nvm.sh" && nvm use v${NODE_VERSION} RUN . "$NVM_DIR/nvm.sh" && nvm alias default v${NODE_VERSION} -ENV PATH="/root/.nvm/versions/node/v${NODE_VERSION}/bin/:${PATH}" +# Add NVM path for user in Dockerfile, interactive shell is already managed by the NVM install script +ENV PATH="/home/frappe/.nvm/versions/node/v${NODE_VERSION}/bin/:${PATH}" + +# Install yarn +RUN npm install -g yarn + +# Print version and verify bashrc is properly sourced so that everything works in the Dockerfile RUN node --version RUN npm --version -RUN npm install -g yarn RUN yarn --version -RUN echo '. "$NVM_DIR/nvm.sh"' >> /home/frappe/.bashrc +# Print version and verify bashrc is properly sourced so that everything works in the interactive shell +RUN bash -c "node --version" +RUN bash -c "npm --version" +RUN bash -c "yarn --version" -# Install bench -RUN pip3 install -e git+https://github.com/frappe/bench.git#egg=bench --no-cache -USER frappe WORKDIR /home/frappe/frappe-bench EXPOSE 8000 9000 6787 -VOLUME [ "/home/frappe/frappe-bench" ] +VOLUME [ "/root/frappe-bench" ]