diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 0e0469003..f8ea94911 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,11 +1,7 @@ -FROM quay.io/wekan/ubuntu:hirsute-20210522 +FROM quay.io/wekan/ubuntu:groovy-20210115 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 BUILD_DEPS="gnupg gosu libarchive-tools wget curl bzip2 g++ build-essential python git ca-certificates iproute2" ENV DEBIAN_FRONTEND=noninteractive ENV \ @@ -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..d1e91b858 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -3,17 +3,18 @@ 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: - 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: 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..88a4b6897 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,36 @@ +*~ +*.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 +.devcontainer/volumes*/ +.git 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*/