version: '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 # 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: image: gsocial/php 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 - /var/www/social/docker # exclude docker folder 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 volumes: - ./docker/redis/redis.conf:/etc/redis/redis.conf ports: - 6379:6379 command: redis-server /etc/redis/redis.conf worker: image: gsocial/php restart: always tty: true 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 - ./docker/worker/worker.sh:/var/entrypoint.d/social_worker.sh # Main files - .:/var/www/social - /var/www/social/docker # exclude docker folder env_file: - ./docker/social/social.env - ./docker/db/db.env command: /entrypoint.sh volumes: database: