X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=support%2Fdocker%2Fproduction%2Fdocker-compose.yml;h=6588337000756981d3f16d7faffb76131354375e;hb=cf0c8ee588e37809d85ec1deec1e4fdfa0f122a5;hp=db1c7d587304cf0820c34a552d9268b63cacbdf4;hpb=e8395f027b6c3e3f757c740e35b20e76c51b03bd;p=github%2FChocobozzz%2FPeerTube.git diff --git a/support/docker/production/docker-compose.yml b/support/docker/production/docker-compose.yml index db1c7d587..658833700 100644 --- a/support/docker/production/docker-compose.yml +++ b/support/docker/production/docker-compose.yml @@ -1,35 +1,101 @@ version: "3.3" services: + + # You can comment this webserver section if you want to use another webserver/proxy + webserver: + image: chocobozzz/peertube-webserver:latest + # If you don't want to use the official image and build one from sources: + # build: + # context: . + # dockerfile: Dockerfile.nginx + env_file: + - .env + ports: + - "80:80" + - "443:443" + volumes: + - type: bind + # Switch sources if you downloaded the whole repository + #source: ../../nginx/peertube + source: ./docker-volume/nginx/peertube + target: /etc/nginx/conf.d/peertube.template + - assets:/var/www/peertube/peertube-latest/client/dist:ro + - ./docker-volume/data:/var/www/peertube/storage + - certbot-www:/var/www/certbot + - ./docker-volume/certbot/conf:/etc/letsencrypt + depends_on: + - peertube + restart: "always" + + # You can comment this certbot section if you want to use another webserver/proxy + certbot: + container_name: certbot + image: certbot/certbot + volumes: + - ./docker-volume/certbot/conf:/etc/letsencrypt + - certbot-www:/var/www/certbot + restart: unless-stopped + entrypoint: /bin/sh -c "trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot; sleep 12h & wait $${!}; done;" + depends_on: + - webserver + peertube: + # If you don't want to use the official image and build one from sources: + # build: + # context: . + # dockerfile: ./support/docker/production/Dockerfile.buster + image: chocobozzz/peertube:production-buster + # Use a static IP for this container because nginx does not handle proxy host change without reload + # This container could be restarted on crash or until the postgresql database is ready for connection + networks: + default: + ipv4_address: 172.18.0.42 + env_file: + - .env - build: . - image: peertube:stretch - environment: - PEERTUBE_HOSTNAME: my.domain.tld - PEERTUBE_PORT: 443 - PEERTUBE_HTTPS: true - PEERTUBE_ADMIN_EMAIL: admin@domain.tld - PEERTUBE_DB_USERNAME: user - PEERTUBE_DB_PASSWORD: password - PEERTUBE_SIGNUP_ENABLED: true - PEERTUBE_TRANSCODING_ENABLED: true - # Traefik labels are suggested as an example for people using Traefik, - # remove them if you are using another reverse proxy. - labels: - traefik.enable: "true" - traefik.frontend.rule: "Host:${PEERTUBE_HOSTNAME}" - traefik.port: "9000" + ports: + - "1935:1935" # If you don't want to use the live feature, you can comment this line + # - "9000:9000" # If you provide your own webserver and reverse-proxy, otherwise not suitable for production volumes: - - ./data:/usr/src/app/data + - assets:/app/client/dist + - ./docker-volume/data:/data + - ./docker-volume/config:/config depends_on: - - db - - db: - image: postgres:10 - environment: - POSTGRES_USERNAME: user - POSTGRES_PASSWORD: password - POSTGRES_DB: peertube_prod + - postgres + - redis + - postfix + restart: "always" + + postgres: + image: postgres:13-alpine + env_file: + - .env + volumes: + - ./docker-volume/db:/var/lib/postgresql/data + restart: "always" + + redis: + image: redis:6-alpine volumes: - - ./db:/var/lib/postgresql/data + - ./docker-volume/redis:/data + restart: "always" + + postfix: + image: mwader/postfix-relay + env_file: + - .env + volumes: + - ./docker-volume/opendkim/keys:/etc/opendkim/keys + restart: "always" + +networks: + default: + ipam: + driver: default + config: + - subnet: 172.18.0.0/16 + +volumes: + assets: + certbot-www: