Browse Source

Improve dockerfile

Chocobozzz 6 years ago
parent
commit
4aeb67a569

+ 3 - 1
.dockerignore

@@ -2,9 +2,11 @@
 *.md
 .git
 .github
-config
 support/doc
 support/nginx
 support/systemd
 support/docker/*/Dockerfile.*
 support/docker/*/*.yml
+storage
+node_modules
+client/node_modules

+ 15 - 9
support/docker/production/Dockerfile.stretch

@@ -33,7 +33,13 @@ RUN set -ex; \
     wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
     wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
     export GNUPGHOME="$(mktemp -d)"; \
-    gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
+    for server in $(shuf -e ha.pool.sks-keyservers.net \
+                            hkp://p80.pool.sks-keyservers.net:80 \
+                            keyserver.ubuntu.com \
+                            hkp://keyserver.ubuntu.com:80 \
+                            pgp.mit.edu) ; do \
+        gpg --keyserver "$server" --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && break || : ; \
+    done; \
     gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
     rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc; \
     chmod +x /usr/local/bin/gosu; \
@@ -41,13 +47,13 @@ RUN set -ex; \
     \
     apt-get purge -y --auto-remove wget
 
-# Download the latest version
-RUN git clone https://github.com/Chocobozzz/PeerTube /app \
-    && chown -R peertube:peertube /app
-
 # Install PeerTube
-USER peertube
 WORKDIR /app
+RUN chown peertube:peertube /app
+
+COPY --chown=peertube:peertube . ./
+
+USER peertube
 
 RUN yarn install --pure-lockfile \
     && npm run build
@@ -58,11 +64,11 @@ ENV NODE_ENV production
 ENV NODE_CONFIG_DIR /app/support/docker/production/config
 
 USER root
-RUN mkdir /data && chown peertube:peertube /data
+RUN mkdir /data
 VOLUME /data
 
-COPY docker-entrypoint.sh /usr/local/bin/
-ENTRYPOINT ["docker-entrypoint.sh"]
+COPY ./support/docker/production/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
+ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
 
 # Run the application
 CMD ["npm", "start"]

+ 3 - 0
support/docker/production/docker-compose.yml

@@ -28,6 +28,9 @@ services:
       traefik.enable: "true"
       traefik.frontend.rule: "Host:${PEERTUBE_HOSTNAME}"
       traefik.port: "9000"
+    # If you don't want to use a reverse proxy (not suitable for production!)
+    # ports:
+      # - "80:9000"
     volumes:
       - ./data:/data
     depends_on:

+ 4 - 4
support/docker/production/docker-entrypoint.sh

@@ -4,13 +4,13 @@ set -e
 # first arg is `-f` or `--some-option`
 # or first arg is `something.conf`
 if [ "${1#-}" != "$1" ] || [ "${1%.conf}" != "$1" ]; then
-        set -- npm "$@"
+    set -- npm "$@"
 fi
 
 # allow the container to be started with `--user`
-if [ "$1" = 'npm' -a "$(id -u)" = '0' ]; then
-        chown -R peertube: /data
-        exec gosu peertube "$0" "$@"
+if [ "$1" = 'npm' -a "$(id -u)" != '0' ]; then
+    chown -R peertube:peertube /data
+    exec gosu peertube "$0" "$@"
 fi
 
 exec "$@"