123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- version: '3.3'
- services:
- nginx:
- image: nginx:alpine
- depends_on:
- - php
- restart: always
- tty: false
- ports:
- - 80:80
- - 443:443
- volumes:
- # Nginx
- - ./docker/nginx/nginx.conf:/var/nginx/social.conf
- - ./docker/nginx/domain.sh:/var/nginx/domain.sh
- # Certbot
- - ./docker/certbot/www:/var/www/certbot
- - ./docker/certbot/.files:/etc/letsencrypt
- # Social
- - ./public:/var/www/social/public
- env_file:
- - ./docker/bootstrap/bootstrap.env
- - ./docker/db/db.env
- command: /bin/sh -c '/var/nginx/domain.sh;
- while :; do
- sleep 6h & wait $${!};
- nginx -s reload;
- done &
- nginx -g "daemon off;"'
- certbot:
- image: certbot/certbot
- depends_on:
- - nginx
- # Check for certificate renewal every 12h as
- # recommended by Let's Encrypt
- entrypoint: /bin/sh -c 'trap exit TERM;
- while :; do
- certbot renew > /dev/null;
- sleep 12h & wait $${!};
- done'
- volumes:
- - ./docker/certbot/www:/var/www/certbot
- - ./docker/certbot/.files:/etc/letsencrypt
- php:
- build: docker/php
- depends_on:
- - db
- restart: always
- tty: true
- ports:
- - 9000:9000
- volumes:
- # Entrypoint
- - ./docker/php/entrypoint.sh:/entrypoint.sh
- - ./docker/db/wait_for_db.sh:/wait_for_db.sh
- - ./docker/social/install.sh:/var/entrypoint.d/social_install.sh
- # Main files
- - .:/var/www/social
- env_file:
- - ./docker/social/social.env
- - ./docker/db/db.env
- command: /entrypoint.sh
- db:
- image: postgres:alpine
- restart: always
- tty: false
- ports:
- - 5432:5432
- environment:
- - PGDATA=/var/lib/postgres/data
- env_file:
- - ./docker/db/db.env
- volumes:
- - database:/var/lib/postgres/data
- redis:
- image: redis:alpine
- restart: always
- tty: false
- ports:
- - 6379:6379
- mail:
- build: docker/mail
- env_file:
- - ./docker/mail/mail.env
- ports:
- - 25:25
- - 110:110
- - 143:143
- - 587:587
- - 993:993
- volumes:
- - ./docker/mail/mail:/var/mail
- - ./docker/mail/config:/etc/mail
- # Certbot
- - ./docker/certbot/www:/var/www/certbot
- - ./docker/certbot/.files:/etc/letsencrypt
- volumes:
- database:
|