diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 43ee2f4..34eb001 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -2,6 +2,21 @@ FROM node:12.18.4-buster-slim LABEL maintainer="buildmaster@rocket.chat" +RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak +RUN touch /etc/apt/sources.list +RUN echo "deb http://mirrors.aliyun.com/debian/ buster main non-free contrib" >> /etc/apt/sources.list \ +&& echo "deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib" >> /etc/apt/sources.list \ +&& echo "deb http://mirrors.aliyun.com/debian-security buster/updates main" >> /etc/apt/sources.list \ +&& echo "deb-src http://mirrors.aliyun.com/debian-security buster/updates main" >> /etc/apt/sources.list \ +&& echo "deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list \ +&& echo "deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list \ +&& echo "deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list \ +&& echo "deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list + +RUN cat /etc/apt/sources.list + +RUN apt update + # dependencies RUN groupadd -g 65533 -r rocketchat \ && useradd -u 65533 -r -g rocketchat rocketchat \ @@ -11,7 +26,7 @@ RUN groupadd -g 65533 -r rocketchat \ && apt-get install -y --no-install-recommends fontconfig #ADD .. /app -ADD ../bundle /app/bundle +ADD ./bundle /app/bundle RUN aptMark="$(apt-mark showmanual)" \ && apt-get install -y --no-install-recommends g++ make python ca-certificates \ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..40464bd --- /dev/null +++ b/Dockerfile @@ -0,0 +1,60 @@ +FROM node:12.18.4-buster-slim + +LABEL maintainer="mail_yanpeng@163.com" + +RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak +RUN touch /etc/apt/sources.list +RUN echo "deb http://mirrors.aliyun.com/debian/ buster main non-free contrib" >> /etc/apt/sources.list \ +&& echo "deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib" >> /etc/apt/sources.list \ +&& echo "deb http://mirrors.aliyun.com/debian-security buster/updates main" >> /etc/apt/sources.list \ +&& echo "deb-src http://mirrors.aliyun.com/debian-security buster/updates main" >> /etc/apt/sources.list \ +&& echo "deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list \ +&& echo "deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib" >> /etc/apt/sources.list \ +&& echo "deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list \ +&& echo "deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib" >> /etc/apt/sources.list + +RUN cat /etc/apt/sources.list + +# dependencies +RUN groupadd -g 65533 -r meteor \ + && useradd -u 65533 -r -g meteor meteor \ + && mkdir -p /app/uploads \ + && chown meteor:meteor /app/uploads \ + && apt-get update \ + && apt-get install -y --no-install-recommends fontconfig + +#ADD .. /app +ADD ./bundle /app/bundle + +RUN aptMark="$(apt-mark showmanual)" \ + && apt-get install -y --no-install-recommends g++ make python ca-certificates \ + && cd /app/bundle/programs/server \ + && npm install \ + && apt-mark auto '.*' > /dev/null \ + && apt-mark manual $aptMark > /dev/null \ + && find /usr/local -type f -executable -exec ldd '{}' ';' \ + | awk '/=>/ { print $(NF-1) }' \ + | sort -u \ + | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -r apt-mark manual \ + && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ +# && npm cache clear --force \ + && chown -R meteor:meteor /app + +USER meteor + +WORKDIR /app/bundle + +# needs a mongoinstance - defaults to container linking with alias 'mongo' +ENV DEPLOY_METHOD=docker \ + NODE_ENV=production \ + MONGO_URL=mongodb://mongo:27017/meteor \ + HOME=/tmp \ + PORT=3000 \ + ROOT_URL=http://localhost:3000 + +EXPOSE 3000 + +CMD ["node", "main.js"] \ No newline at end of file diff --git a/docker-compose-meteor.yml b/docker-compose-meteor.yml new file mode 100644 index 0000000..39c09dd --- /dev/null +++ b/docker-compose-meteor.yml @@ -0,0 +1,52 @@ +version: '3' +services: + meteorvue: + image: nelson/meteor-vue:latest + command: > + bash -c + "for i in `seq 1 30`; do + node main.js && + s=$$? && break || s=$$?; + echo \"Tried $$i times. Waiting 5 secs...\"; + sleep 5; + done; (exit $$s)" + restart: unless-stopped + volumes: + - ./uploads:/app/uploads + environment: + - PORT=3000 + - ROOT_URL=http://localhost:3000 + - MONGO_URL=mongodb://mongo:27017/rocketchat + - MONGO_OPLOG_URL=mongodb://mongo:27017/local + - MAIL_URL=smtp://smtp.email + depends_on: + - mongo + ports: + - 3000:3000 + labels: + - "traefik.backend=rocketchat" + - "traefik.frontend.rule=Host: your.domain.tld" + mongo: + image: mongo:4.0 + restart: unless-stopped + volumes: + - ./data/db:/data/db + #- ./data/dump:/dump + command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1 + labels: + - "traefik.enable=false" + mongo-init-replica: + image: mongo:4.0 + command: > + bash -c + "for i in `seq 1 30`; do + mongo mongo/meteor --eval \" + rs.initiate({ + _id: 'rs0', + members: [ { _id: 0, host: 'localhost:27017' } ]})\" && + s=$$? && break || s=$$?; + echo \"Tried $$i times. Waiting 5 secs...\"; + sleep 5; + done; (exit $$s)" + depends_on: + - mongo