/
docker-compose.yml
93 lines (87 loc) · 3.08 KB
/
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
version: '3'
services:
mariadb:
restart: unless-stopped
image: wodby/mariadb:$MARIADB_TAG
container_name: "${PROJECT_NAME}_mariadb"
stop_grace_period: 30s
environment:
MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD
MYSQL_DATABASE: $DB_NAME
MYSQL_USER: $DB_USER
MYSQL_PASSWORD: $DB_PASSWORD
volumes:
- ./database:/var/lib/mysql
networks:
- project
php:
restart: unless-stopped
image: wodby/drupal-php:$PHP_TAG
container_name: "${PROJECT_NAME}_php"
environment:
PHP_OPCACHE_JIT_BUFFER_SIZE: 30m
PHP_DISPLAY_ERRORS: 0
PHP_EXTENSIONS_DISABLE: "sqlsrv,rdkafka,pgsql,pdo_sqlsrv,pdo_pgsql,pcov,mongodb,ldap,intl,imap,grpc,event,ds,ast,amqp"
volumes:
- ./www:/var/www/html
networks:
- project
crond:
restart: unless-stopped
image: wodby/drupal-php:$PHP_TAG
container_name: "${PROJECT_NAME}_crond"
command: sudo -E crond -f -d 0
environment:
CRONTAB: |-
* * * * * drush -r /var/www/html/web cron --uri=https://${PROJECT_BASE_URL}
networks:
- project
volumes:
- ./www:/var/www/html
nginx:
restart: unless-stopped
image: wodby/nginx:$NGINX_TAG
container_name: "${PROJECT_NAME}_nginx"
depends_on:
- php
environment:
NGINX_ERROR_LOG_LEVEL: debug
NGINX_BACKEND_HOST: php
NGINX_SERVER_ROOT: /var/www/html/web
NGINX_VHOST_PRESET: $NGINX_VHOST_PRESET
volumes:
- ./www:/var/www/html
labels:
- traefik.enable=true
- traefik.docker.network=web
- traefik.http.routers.${PROJECT_NAME}_nginx_http.rule=Host(`${PROJECT_BASE_URL}`, `www.${PROJECT_BASE_URL}`)
- traefik.http.routers.${PROJECT_NAME}_nginx_http.entrypoints=http
- traefik.http.routers.${PROJECT_NAME}_nginx_https.rule=Host(`${PROJECT_BASE_URL}`, `www.${PROJECT_BASE_URL}`)
- traefik.http.routers.${PROJECT_NAME}_nginx_https.entrypoints=https
- traefik.http.routers.${PROJECT_NAME}_nginx_https.tls=true
- traefik.http.routers.${PROJECT_NAME}_nginx_https.tls.certresolver=letsencrypt
- traefik.http.middlewares.${PROJECT_NAME}_nginx_redirect_to_https.redirectscheme.scheme=https
- traefik.http.routers.${PROJECT_NAME}_nginx_http.middlewares=${PROJECT_NAME}_nginx_redirect_to_https@docker
- traefik.http.middlewares.${PROJECT_NAME}_nginx_redirect_www.redirectregex.permanent=true
- traefik.http.middlewares.${PROJECT_NAME}_nginx_redirect_www.redirectregex.regex=^https://www\.(.*)
- traefik.http.middlewares.${PROJECT_NAME}_nginx_redirect_www.redirectregex.replacement=https://$${1}
- traefik.http.routers.${PROJECT_NAME}_nginx_https.middlewares=${PROJECT_NAME}_nginx_redirect_www@docker
networks:
- web
- project
node:
restart: "no"
image: wodby/node:$NODE_TAG
container_name: "${PROJECT_NAME}_node"
working_dir: /var/www/html
volumes:
- ./www:/var/www/html
command: sh -c 'yarn install && yarn run compile'
networks:
- project
networks:
web:
external: true
project:
external: false
name: "${PROJECT_NAME}_network"