padloc/docs/examples/hosting/docker/postgres-nginx-letsencrypt/docker-compose.yml

83 lines
2.4 KiB
YAML

version: "3.7"
services:
db:
image: postgres:13
expose:
- 5432
environment:
- POSTGRES_USER=$PL_DATA_POSTGRES_USER
- POSTGRES_DB=$PL_DATA_POSTGRES_DATABASE
- POSTGRES_PASSWORD=$PL_DATA_POSTGRES_PASSWORD
volumes:
- data:/var/lib/postgresql/data
restart: unless-stopped
server:
image: padloc/server
build:
context: github.com/padloc/padloc.git#docs/docker-examples
dockerfile: Dockerfile-server
depends_on:
- db
environment:
- PL_DATA_BACKEND=postgres
- PL_DATA_POSTGRES_HOST=db
- PL_DATA_POSTGRES_PORT=5432
- PL_DATA_POSTGRES_DATABASE
- PL_DATA_POSTGRES_USER
- PL_DATA_POSTGRES_PASSWORD
- PL_SERVER_CLIENT_URL=https://$PL_HOSTNAME
- PL_SERVER_REPORT_ERRORS=$PL_ADMIN_EMAIL
- PL_EMAIL_BACKEND
- PL_EMAIL_SMTP_HOST
- PL_EMAIL_SMTP_PORT
- PL_EMAIL_SMTP_USER
- PL_EMAIL_SMTP_PASSWORD
- PL_EMAIL_SMTP_FROM
expose:
- 3000
volumes:
- attachments:/attachments
restart: unless-stopped
pwa:
image: padloc/pwa
env_file: .env
environment:
PL_PWA_DIR: /pwa
PL_SERVER_URL: https://$PL_HOSTNAME/server
build:
context: github.com/padloc/padloc.git#docs/docker-examples
dockerfile: Dockerfile-pwa
volumes:
- pwa:/pwa
command: ["build"]
restart: on-failure
nginx:
env_file: .env
image: nginx
depends_on:
- server
restart: always
volumes:
- pwa:/pwa
- ./nginx.conf:/etc/nginx/nginx.conf
- /etc/letsencrypt/live/$PL_HOSTNAME/fullchain.pem:/tls/cert
- /etc/letsencrypt/live/$PL_HOSTNAME/privkey.pem:/tls/key
ports:
- 80:80
- 443:443
certbot:
env_file: .env
image: certbot/certbot
volumes:
- /etc/letsencrypt:/etc/letsencrypt
- /var/lib/letsencrypt:/var/lib/letsencrypt
command: "certonly --standalone -d $PL_HOSTNAME --expand --non-interactive --agree-tos -m $PL_ADMIN_EMAIL"
ports:
- 80:80
- 443:443
profiles: ["certbot"]
volumes:
data:
attachments:
pwa: