111 lines
3.2 KiB
YAML
Executable File
111 lines
3.2 KiB
YAML
Executable File
version: '3.8'
|
|
|
|
services:
|
|
traefik:
|
|
image: traefik:v2.11
|
|
container_name: netgescon_traefik
|
|
restart: unless-stopped
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
command:
|
|
- --providers.docker=true
|
|
- --providers.docker.exposedbydefault=false
|
|
- --entrypoints.web.address=:80
|
|
- --entrypoints.websecure.address=:443
|
|
- --certificatesresolvers.letsencrypt.acme.email=${LETSENCRYPT_EMAIL}
|
|
- --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json
|
|
- --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
- netgescon_letsencrypt:/letsencrypt
|
|
networks:
|
|
- netgescon_online
|
|
|
|
app:
|
|
image: netgescon/app:${NETGESCON_VERSION:-latest}
|
|
build:
|
|
context: ..
|
|
dockerfile: docker/Dockerfile.prod
|
|
container_name: netgescon_online_app
|
|
restart: unless-stopped
|
|
environment:
|
|
APP_ENV: production
|
|
APP_DEBUG: "false"
|
|
APP_URL: ${APP_URL}
|
|
DB_CONNECTION: mysql
|
|
DB_HOST: db
|
|
DB_PORT: 3306
|
|
DB_DATABASE: ${DB_DATABASE}
|
|
DB_USERNAME: ${DB_USERNAME}
|
|
DB_PASSWORD: ${DB_PASSWORD}
|
|
MYSQL_SSL_VERIFY_SERVER_CERT: ${MYSQL_SSL_VERIFY_SERVER_CERT:-FALSE}
|
|
DISABLE_SCHEMA_LOAD: "true"
|
|
RUN_MIGRATIONS: "true"
|
|
RUN_FILAMENT_ASSETS: "false"
|
|
FIX_PERMISSIONS: "true"
|
|
RUN_SEEDERS: "demo"
|
|
volumes:
|
|
- netgescon_online_storage:/var/www/storage
|
|
- netgescon_online_cache:/var/www/bootstrap/cache
|
|
- netgescon_online_public:/var/www/public
|
|
- ${LEGACY_ARCHIVES_PATH:-/mnt/gescon-archives/gescon}:/mnt/gescon-archives/gescon:ro
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
networks:
|
|
- netgescon_online
|
|
|
|
nginx:
|
|
image: nginx:alpine
|
|
container_name: netgescon_online_nginx
|
|
restart: unless-stopped
|
|
volumes:
|
|
- netgescon_online_public:/var/www/public
|
|
- ../docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
|
|
depends_on:
|
|
- app
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.netgescon.rule=Host(`${DOMAIN}`)"
|
|
- "traefik.http.routers.netgescon.entrypoints=websecure"
|
|
- "traefik.http.routers.netgescon.tls=true"
|
|
- "traefik.http.routers.netgescon.tls.certresolver=letsencrypt"
|
|
- "traefik.http.services.netgescon.loadbalancer.server.port=80"
|
|
networks:
|
|
- netgescon_online
|
|
|
|
db:
|
|
image: mysql:8.0
|
|
container_name: netgescon_online_db
|
|
restart: unless-stopped
|
|
command: --log-bin-trust-function-creators=1
|
|
environment:
|
|
MYSQL_DATABASE: ${DB_DATABASE}
|
|
MYSQL_USER: ${DB_USERNAME}
|
|
MYSQL_PASSWORD: ${DB_PASSWORD}
|
|
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
|
|
volumes:
|
|
- netgescon_online_db:/var/lib/mysql
|
|
- ../docker/mysql/init.sql:/docker-entrypoint-initdb.d/01-init.sql
|
|
networks:
|
|
- netgescon_online
|
|
|
|
redis:
|
|
image: redis:alpine
|
|
container_name: netgescon_online_redis
|
|
restart: unless-stopped
|
|
networks:
|
|
- netgescon_online
|
|
|
|
volumes:
|
|
netgescon_online_db:
|
|
netgescon_online_storage:
|
|
netgescon_online_cache:
|
|
netgescon_online_public:
|
|
netgescon_letsencrypt:
|
|
|
|
networks:
|
|
netgescon_online:
|
|
driver: bridge
|