3 changed files with 128 additions and 1 deletions
@ -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"] |
@ -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 |
Loading…
Reference in new issue