From 5697b89817951b253fc515e5f70c33fafcf9f85c Mon Sep 17 00:00:00 2001 From: Martin Filser Date: Sun, 25 Apr 2021 11:18:11 +0200 Subject: [PATCH 1/5] .devcontainer now ready for Wekan Development in Docker Container Check .devcontainer/docker-compose.yml to fit your environment Enter this commands to start Wekan Development: $ cd .devcontainer $ docker-compose build $ docker-compose up -d Visit localhost:3000 or whatever you entered in ROOT_URL Code changes triggers a rebuild / redeploy --- .devcontainer/Dockerfile | 76 +++++++++++++++++++++++++------- .devcontainer/docker-compose.yml | 11 +++-- .dockerignore | 34 ++++++++++++++ .gitignore | 1 + 4 files changed, 103 insertions(+), 19 deletions(-) create mode 100644 .dockerignore diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 0e0469003..734c132ed 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,10 +1,6 @@ -FROM quay.io/wekan/ubuntu:hirsute-20210522 +FROM debian LABEL maintainer="sgr" -# 2020-12-03: -# - Above Ubuntu base image copied from Docker Hub ubuntu:groovy-20201125.2 -# to Quay to avoid Docker Hub rate limits. - ENV BUILD_DEPS="gnupg gosu bsdtar wget curl bzip2 g++ build-essential python git ca-certificates iproute2" ENV DEBIAN_FRONTEND=noninteractive @@ -140,17 +136,17 @@ ENV \ RUN set -o xtrace \ && useradd --user-group -m --system --home-dir /home/wekan wekan \ && apt-get update \ - && apt-get install --assume-yes --no-install-recommends apt-utils apt-transport-https ca-certificates 2>&1 \ - && apt-get install --assume-yes --no-install-recommends ${BUILD_DEPS} + && apt-get install --assume-yes --no-install-recommends apt-utils apt-transport-https ca-certificates 2>&1 \ + && apt-get install --assume-yes --no-install-recommends ${BUILD_DEPS} # Install NodeJS RUN set -o xtrace \ && cd /tmp \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-$ARCHITECTURE.tar.xz" \ - && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ - && grep " node-v$NODE_VERSION-$ARCHITECTURE.tar.xz\$" SHASUMS256.txt.asc | sha256sum -c - \ - && tar -xJf "node-v$NODE_VERSION-$ARCHITECTURE.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ - && rm "node-v$NODE_VERSION-$ARCHITECTURE.tar.xz" SHASUMS256.txt.asc \ + && curl -fsSLO --compressed "https://nodejs.org/dist/$NODE_VERSION/node-$NODE_VERSION-$ARCHITECTURE.tar.xz" \ + && curl -fsSLO --compressed "https://nodejs.org/dist/$NODE_VERSION/SHASUMS256.txt.asc" \ + && grep " node-$NODE_VERSION-$ARCHITECTURE.tar.xz\$" SHASUMS256.txt.asc | sha256sum -c - \ + && tar -xJf "node-$NODE_VERSION-$ARCHITECTURE.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ + && rm "node-$NODE_VERSION-$ARCHITECTURE.tar.xz" SHASUMS256.txt.asc \ && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ && mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp /root/.node-gyp/${NODE_VERSION} /home/wekan/.config \ && npm install -g npm@${NPM_VERSION} \ @@ -172,17 +168,65 @@ RUN set -o xtrace \ ENV PATH=$PATH:/home/wekan/.meteor/ -# Copy source dir USER root RUN echo "export PATH=$PATH" >> /etc/environment -RUN set -o xtrace \ - && mkdir /home/wekan/app +USER wekan -COPY ${SRC_PATH} /home/wekan/app/ +# Copy source dir +RUN set -o xtrace \ + && mkdir -p /home/wekan/app/.meteor \ + && mkdir -p /home/wekan/app/packages + +COPY \ + .meteor/.finished-upgraders \ + .meteor/.id \ + .meteor/cordova-plugins \ + .meteor/packages \ + .meteor/platforms \ + .meteor/release \ + .meteor/versions \ + /home/wekan/app/.meteor/ + +COPY \ + package.json \ + settings.json \ + /home/wekan/app/ + +COPY \ + packages \ + /home/wekan/app/packages/ + +USER root RUN set -o xtrace \ && chown -R wekan:wekan /home/wekan/app /home/wekan/.meteor USER wekan + +RUN \ + set -o xtrace && \ + sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' /home/wekan/app/packages/meteor-useraccounts-core/package.js && \ + cd /home/wekan/.meteor && \ + /home/wekan/.meteor/meteor -- help; + +RUN \ + set -o xtrace && \ + # Build app + cd /home/wekan/app && \ + /home/wekan/.meteor/meteor add standard-minifier-js && \ + /home/wekan/.meteor/meteor npm install && \ + /home/wekan/.meteor/meteor build --directory /home/wekan/app_build + +RUN \ + set -o xtrace && \ + cd /home/wekan/app_build/bundle/programs/server/ && \ + chmod u+w package.json npm-shrinkwrap.json && \ + npm install + +ENV PORT=3000 +EXPOSE $PORT +WORKDIR /home/wekan/app + +CMD ["/home/wekan/.meteor/meteor", "run", "--verbose", "--settings", "settings.json"] diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index fab770560..9a21bbfd6 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -14,6 +14,7 @@ services: volumes: - wekan-dev-db:/data/db - wekan-dev-db-dump:/dump + - /etc/localtime:/etc/localtime:ro wekan-dev: container_name: wekan-dev-app @@ -35,9 +36,13 @@ services: depends_on: - wekandb-dev volumes: - - ..:/app:delegated - command: - sleep infinity + - ../client:/home/wekan/app/client + - ../models:/home/wekan/app/models + - ../config:/home/wekan/app/config + - ../i18n:/home/wekan/app/i18n + - ../server:/home/wekan/app/server + - ../public:/home/wekan/app/public + - /etc/localtime:/etc/localtime:ro volumes: wekan-dev-db: diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..7037d0625 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,34 @@ +*~ +*.swp +.meteor-spk +*.sublime-workspace +tmp/ +node_modules/ +npm-debug.log +.gitmodules +.vscode/ +.idea/ +.build/* +**/parts/ +**/stage +**/prime +**/*.snap +snap/.snapcraft/ +.idea +.DS_Store +.DS_Store? +.build* +*.browserify.js.cached +*.browserify.js.map +.build* +versions.json +.versions +.npm +.build* +._* +.Trashes +Thumbs.db +ehthumbs.db +.eslintcache +.meteor/local +.devcontainer/docker-compose.extend.yml diff --git a/.gitignore b/.gitignore index 7037d0625..b108de038 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ ehthumbs.db .eslintcache .meteor/local .devcontainer/docker-compose.extend.yml +.devcontainer/volumes*/ From bbd3324b79b66dc77e08f9c389dae24ab50d20d3 Mon Sep 17 00:00:00 2001 From: Martin Filser Date: Thu, 10 Jun 2021 19:34:43 +0200 Subject: [PATCH 2/5] ignore .git directory at docker build - COPY copies the .git directory to the image. The docker build then stops with this error: => Errors while initializing project: While building package wekan-cfs-data-man: error: couldn't install npm package request@https://github.com/wekan/request: Command failed: /home/wekan/.meteor/packages/meteor-tool/.2.2.0.1j8auib.qcbe++os.linux.x86_64+web.browser+web.browser.legacy+web.cordova/mt-os.linux.x86_64/dev_bundle/bin/npm install https://github.com/wekan/request npm ERR! Error while executing: npm ERR! /usr/bin/git ls-remote -h -t https://github.com/wekan/request.git npm ERR! npm ERR! fatal: not a git repository: /home/wekan/app/../.git/modules/src npm ERR! npm ERR! exited with error code: 128 npm ERR! A complete log of this run can be found in: npm ERR! /home/wekan/.npm/_logs/2021-06-10T12_54_02_777Z-debug.log npm ERR! Error while executing: npm ERR! /usr/bin/git ls-remote -h -t https://github.com/wekan/request.git npm ERR! npm ERR! fatal: not a git repository: /home/wekan/app/../.git/modules/src npm ERR! npm ERR! exited with error code: 128 npm ERR! A complete log of this run can be found in: npm ERR! /home/wekan/.npm/_logs/2021-06-10T12_54_02_777Z-debug.log --- .dockerignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.dockerignore b/.dockerignore index 7037d0625..c6d1be4fd 100644 --- a/.dockerignore +++ b/.dockerignore @@ -32,3 +32,4 @@ ehthumbs.db .eslintcache .meteor/local .devcontainer/docker-compose.extend.yml +.git From 6d2f8a97af6f7e27e1d5a5645c334ecdce3816ea Mon Sep 17 00:00:00 2001 From: Martin Filser Date: Thu, 10 Jun 2021 22:28:03 +0200 Subject: [PATCH 3/5] Base Image of Development and Build are now the same - libarchive-tools contains bsdtar. bsdtar is needed for meteor installation, it doesn't / or didn't work with docker and overlayfs. see also here: https://github.com/jshimko/meteor-launchpad/issues/39 https://github.com/anchore/anchore-engine/issues/106 https://github.com/coreos/bugs/issues/1095 --- .devcontainer/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 734c132ed..f8ea94911 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,7 +1,7 @@ -FROM debian +FROM quay.io/wekan/ubuntu:groovy-20210115 LABEL maintainer="sgr" -ENV BUILD_DEPS="gnupg gosu bsdtar wget curl bzip2 g++ build-essential python git ca-certificates iproute2" +ENV BUILD_DEPS="gnupg gosu libarchive-tools wget curl bzip2 g++ build-essential python git ca-certificates iproute2" ENV DEBIAN_FRONTEND=noninteractive ENV \ From b0901ccd01aaa2cf21ebccd56d830f59e9876a40 Mon Sep 17 00:00:00 2001 From: Martin Filser Date: Fri, 11 Jun 2021 11:15:53 +0200 Subject: [PATCH 4/5] Development uses now the same Mongo Version (4.4) --- .devcontainer/docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 9a21bbfd6..737ed9624 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -3,10 +3,10 @@ version: '3.7' services: wekandb-dev: - image: mongo:4.0.12 + image: mongo:4.4 container_name: wekan-dev-db restart: unless-stopped - command: mongod --smallfiles --oplogSize 128 + command: mongod --oplogSize 128 networks: - wekan-dev-tier expose: From 403b416b2a7bbfc6997f818ce0f7b36249c38ed5 Mon Sep 17 00:00:00 2001 From: Martin Filser Date: Fri, 11 Jun 2021 11:16:23 +0200 Subject: [PATCH 5/5] Development volumes now in the same folder - It's easier for the development to have the files in the same folder than in an extra volume --- .devcontainer/docker-compose.yml | 4 ++-- .dockerignore | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 737ed9624..d1e91b858 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -12,8 +12,8 @@ services: expose: - 27017 volumes: - - wekan-dev-db:/data/db - - wekan-dev-db-dump:/dump + - ./volumes/wekan-db:/data/db + - ./volumes/wekan-db-dump:/dump - /etc/localtime:/etc/localtime:ro wekan-dev: diff --git a/.dockerignore b/.dockerignore index c6d1be4fd..88a4b6897 100644 --- a/.dockerignore +++ b/.dockerignore @@ -32,4 +32,5 @@ ehthumbs.db .eslintcache .meteor/local .devcontainer/docker-compose.extend.yml +.devcontainer/volumes*/ .git