PeerTube/support/docker/production/docker-compose.yml

82 lines
2.1 KiB
YAML

version: "3.3"
services:
# The webserver is not required, but recommended since a lot of optimizations went to its
# nginx configuration file. It runs the default nginx configuration without HTTPS nor SSL,
# so use it in production in tandem with an SSL-terminating reverse-proxy.
webserver:
image: chocobozzz/peertube:webserver
build:
context: .
dockerfile: Dockerfile.nginx
env_file:
- .env
# If you provide your own reverse-proxy, otherwise not suitable for production:
#ports:
# - "9000:80" # serving HTTP
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
depends_on:
- peertube
restart: "always"
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
env_file:
- .env
# If you provide your own webserver and reverse-proxy, otherwise not suitable for production:
#ports:
# - "80:9000" # serving HTTP
volumes:
- assets:/app/client/dist
- ./docker-volume/data:/data
- ./docker-volume/config:/config
depends_on:
- 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:
- ./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: