diff --git a/.docker-mongo/Dockerfile b/.docker-mongo/Dockerfile index ca963c16aad..5294e94f7d3 100644 --- a/.docker-mongo/Dockerfile +++ b/.docker-mongo/Dockerfile @@ -1,24 +1,24 @@ FROM rocketchat/base:12.14.0 -ADD . /app -ADD entrypoint.sh /app/bundle/ - -MAINTAINER buildmaster@rocket.chat +LABEL maintainer="buildmaster@rocket.chat" RUN set -x \ - && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 \ + && apt-get update \ + && apt-get install -y wget \ + && wget -qO - https://www.mongodb.org/static/pgp/server-4.0.asc | apt-key add - \ && echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list \ && apt-get update \ - && apt-get install -y --force-yes pwgen mongodb-org \ - && echo "mongodb-org hold" | dpkg --set-selections \ - && echo "mongodb-org-server hold" | dpkg --set-selections \ - && echo "mongodb-org-shell hold" | dpkg --set-selections \ - && echo "mongodb-org-mongos hold" | dpkg --set-selections \ - && echo "mongodb-org-tools hold" | dpkg --set-selections \ + && apt-get install -y pwgen mongodb-org \ + && apt-get clean my room + +ADD . /app +ADD entrypoint.sh /app/bundle/ + +RUN set -x \ && cd /app/bundle/programs/server \ && npm install \ && npm cache clear --force \ - && rm -rf /var/lib/apt/lists/* + && chown -R rocketchat:rocketchat /app VOLUME /app/uploads @@ -28,6 +28,7 @@ WORKDIR /app/bundle ENV DEPLOY_METHOD=docker-preview \ NODE_ENV=production \ MONGO_URL=mongodb://localhost:27017/rocketchat \ + MONGO_OPLOG_URL=mongodb://localhost:27017/local \ HOME=/tmp \ PORT=3000 \ ROOT_URL=http://localhost:3000 \ diff --git a/.docker-mongo/entrypoint.sh b/.docker-mongo/entrypoint.sh index f86035acba5..15d0c0f76e6 100644 --- a/.docker-mongo/entrypoint.sh +++ b/.docker-mongo/entrypoint.sh @@ -39,11 +39,32 @@ echo """ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═╝╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═══╝ ╚═╝╚══════╝ ╚══╝╚══╝ """ -mongod --smallfiles --storageEngine=mmapv1 --fork --config /etc/mongod.conf +mongod --smallfiles --storageEngine=mmapv1 --fork --replSet rs0 --config /etc/mongod.conf until mongo --eval "db" &> /dev/null; do echo "MongoDB still not ready, sleeping" sleep 1 done -node main.js +sleep 2 + +# initiate mongo replica set +for i in `seq 1 30`; do + mongo rocketchat --eval " + rs.initiate({ + _id: 'rs0', + members: [ { _id: 0, host: 'localhost:27017' } ]})" && + s=$? && break || s=$?; + echo "Tried $i times. Waiting 5 secs..."; + sleep 5; +done; + +sleep 2 + +# try multiple times until replica set is ready +for i in `seq 1 30`; do + node main.js && + s=$? && break || s=$?; + echo "Tried $i times. Waiting 5 secs..."; + sleep 5; +done; diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 9a9f943d9e0..f379dfe98aa 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -419,7 +419,6 @@ jobs: export DOCKER_PATH="${GITHUB_WORKSPACE}/.docker" if [[ '${{ matrix.release }}' = 'preview' ]]; then - export IMAGE="${IMAGE}.preview" export DOCKER_PATH="${DOCKER_PATH}-mongo" fi; @@ -437,6 +436,10 @@ jobs: cd /tmp/build export CIRCLE_TAG="${GITHUB_REF#*tags/}" + if [[ '${{ matrix.release }}' = 'preview' ]]; then + export IMAGE="${IMAGE}.preview" + fi; + docker build -t ${IMAGE}:$CIRCLE_TAG . docker push ${IMAGE}:$CIRCLE_TAG @@ -453,5 +456,10 @@ jobs: if: github.ref == 'refs/heads/develop' run: | cd /tmp/build + + if [[ '${{ matrix.release }}' = 'preview' ]]; then + export IMAGE="${IMAGE}.preview" + fi; + docker build -t ${IMAGE}:develop . docker push ${IMAGE}:develop