-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.yml
177 lines (165 loc) · 5.71 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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
version: '3.8'
name: laravel-project
services:
####################################################################################################
# PHP
####################################################################################################
php:
container_name: php-fpm
depends_on:
db_mysql:
condition: service_started
build:
context: .
dockerfile: .docker/php/Dockerfile
expose:
- 9000
volumes:
- ./:/var/www:cached
- /var/www/vendor
- /var/www/node_modules
networks:
- laravel-net
####################################################################################################
# Nginx
####################################################################################################
nginx:
container_name: app
image: nginx
environment:
VIRTUAL_HOST: laravel.dev.fr
VIRTUAL_PORT: 80
SELF_SIGNED_HOST: laravel.dev.fr
expose:
- 80
volumes:
- ./:/var/www
- .docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
- .docker/nginx/nginx.conf:/etc/nginx/nginx.conf
depends_on:
- php
networks:
- proxy
- laravel-net
####################################################################################################
# DATABASE (MySQL)
####################################################################################################
db_mysql:
container_name: mysql
platform: linux/amd64
image: mysql:8
expose:
- 3306
volumes:
- .docker/db/data:/var/lib/mysql
- .docker/logs:/var/log/mysql
- .docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
- .docker/db/sql:/docker-entrypoint-initdb.d
environment:
MYSQL_HOST: db_mysql
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root}
MYSQL_DATABASE: ${MYSQL_DATABASE:-refactorian}
MYSQL_USER: ${MYSQL_USER:-refactorian}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-refactorian}
TZ: Europe/Paris
networks:
- laravel-net
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost", "-uroot", "-prefactorian" ]
interval: 5s
timeout: 5s
retries: 20
####################################################################################################
# phpMyAdmin
####################################################################################################
phpmyadmin:
container_name: pma
platform: linux/amd64
image: phpmyadmin/phpmyadmin
expose:
- 80
links:
- db_mysql
environment:
PMA_HOST: ${PMA_HOST:-db}
PMA_PORT: ${PMA_PORT:-3306}
PMA_ARBITRARY: 1
VIRTUAL_HOST: laravel.pma.fr
VIRTUAL_PORT: 80
SELF_SIGNED_HOST: laravel.pma.fr
volumes:
- .docker/phpmyadmin/sessions:/sessions
networks:
- proxy
- laravel-net
####################################################################################################
# Mailpit
####################################################################################################
mail:
container_name: mailpit
image: axllent/mailpit:latest
expose:
- 8025
environment:
VIRTUAL_HOST: mailpit.fr
VIRTUAL_PORT: 8025
SELF_SIGNED_HOST: mailpit.fr
ports:
- "1025:1025"
networks:
- laravel-net
- proxy
####################################################################################################
# Redis
####################################################################################################
redis:
container_name: redis
image: redis:latest
command: redis-server --appendonly yes
volumes:
- .docker/redis/data:/data
expose:
- 6379
networks:
- laravel-net
####################################################################################################
# MAIN NGINX PROXY + SELF SIGNED CERTIFICATES SYSTEM
####################################################################################################
nginx-proxy:
platform: linux/amd64
container_name: nginx-proxy
image: nginxproxy/nginx-proxy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./.docker/nginx/certs:/etc/nginx/certs:ro
- vhost:/etc/nginx/vhost.d
networks:
- proxy
# Import to browser the ca.cert file generated in /.docker/nginx/certs/ca.cert
# Need to import cert file under "root trusted autorities" tab
# From https://github.com/sebastienheyd/docker-self-signed-proxy-companion
nginx-companion:
platform: linux/amd64
container_name: nginx-companion
image: sebastienheyd/self-signed-proxy-companion
restart: always
depends_on:
- nginx-proxy
environment:
NGINX_PROXY_CONTAINER: nginx-proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./.docker/nginx/certs:/etc/nginx/certs:rw
networks:
- proxy
volumes:
vhost:
networks:
laravel-net:
name: laravel-net
proxy:
name: proxy