-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcompose.pullpreview.yml
152 lines (150 loc) · 5.71 KB
/
compose.pullpreview.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
services:
app:
container_name: ${APP_CONTAINER_NAME:-transmorpher-amigor}
build:
context: .
dockerfile: ./amigor/docker/Dockerfile
networks:
- traefik
- internal
depends_on:
mysql:
condition: service_healthy
traefik:
condition: service_started
environment:
PULLPREVIEW: true
PULLPREVIEW_FIRST_RUN: ${PULLPREVIEW_FIRST_RUN}
TRANSMORPHER_WEB_DELIVERY_BASE_URL: https://${PULLPREVIEW_PUBLIC_DNS}/transmorpherServer
TRANSMORPHER_WEB_API_BASE_URL: https://${PULLPREVIEW_PUBLIC_DNS}/transmorpherServer/api
APP_URL: ${PULLPREVIEW_URL}
volumes:
- 'app-storage:/var/www/html/amigor/storage'
- '.env:/var/www/html/amigor/.env'
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.${APP_CONTAINER_NAME:-transmorpher-amigor}.rule=Host(`${PULLPREVIEW_PUBLIC_DNS}`)'
- 'traefik.http.routers.${APP_CONTAINER_NAME:-transmorpher-amigor}.tls=true'
- 'traefik.http.routers.${APP_CONTAINER_NAME:-transmorpher-amigor}.tls.certresolver=production'
- 'traefik.http.routers.${APP_CONTAINER_NAME:-transmorpher-amigor}.priority=1'
- 'traefik.http.routers.amigor-root.rule=Host(`${PULLPREVIEW_PUBLIC_DNS}`) && Path(`/`)'
- 'traefik.http.routers.amigor-root.middlewares=htpasswd'
- 'traefik.http.routers.amigor-root.tls=true'
- 'traefik.http.routers.amigor-root.tls.certresolver=production'
- 'traefik.http.routers.amigor-root.priority=3'
- 'traefik.http.middlewares.htpasswd.basicauth.usersfile=/.htpasswd'
mysql:
image: 'mysql/mysql-server:8.0'
container_name: ${MYSQL_CONTAINER_NAME:-amigor-mysql-1}
ports:
- '3306:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_ROOT_HOST: "%"
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 1
volumes:
- 'mysql:/var/lib/mysql'
networks:
- internal
healthcheck:
test: [ "CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}" ]
retries: 3
timeout: 5s
transmorpher:
container_name: ${TRANSMORPHER_CONTAINER_NAME:-transmorpher}
image: 'cybexwebdev/transmorpher'
networks:
- traefik
- internal
depends_on:
mysql-transmorpher:
condition: service_healthy
traefik:
condition: service_started
environment:
PULLPREVIEW: true
PULLPREVIEW_FIRST_RUN: ${PULLPREVIEW_FIRST_RUN}
VIDEO_TRANSCODING_WORKERS_AMOUNT: ${VIDEO_TRANSCODING_WORKERS_AMOUNT:-1}
APP_URL: ${PULLPREVIEW_URL}/transmorpherServer
CLIENT_CONTAINER_NAME: ${APP_CONTAINER_NAME:-transmorpher-amigor}
volumes:
- 'transmorpher-storage:/var/www/html/storage'
- './amigor/.env.transmorpher:/var/www/html/.env'
labels:
- 'traefik.enable=true'
- 'traefik.http.routers.${TRANSMORPHER_CONTAINER_NAME:-transmorpher}.rule=Host(`${PULLPREVIEW_PUBLIC_DNS}`) && PathPrefix(`/transmorpherServer`)'
- 'traefik.http.routers.${TRANSMORPHER_CONTAINER_NAME:-transmorpher}.middlewares=strip-path-prefix@docker'
- 'traefik.http.routers.${TRANSMORPHER_CONTAINER_NAME:-transmorpher}.priority=2'
- 'traefik.http.routers.${TRANSMORPHER_CONTAINER_NAME:-transmorpher}.tls=true'
- 'traefik.http.routers.${TRANSMORPHER_CONTAINER_NAME:-transmorpher}.tls.certresolver=production'
- "traefik.http.middlewares.strip-path-prefix.stripprefix.prefixes=/transmorpherServer"
mysql-transmorpher:
image: 'mysql/mysql-server:8.0'
container_name: ${TRANSMORPHER_MYSQL_CONTAINER_NAME:-transmorpher-mysql-1}
environment:
MYSQL_ROOT_PASSWORD: 'password'
MYSQL_ROOT_HOST: "%"
MYSQL_DATABASE: 'transmorpher'
MYSQL_USER: 'transmorpher'
MYSQL_PASSWORD: 'password'
MYSQL_ALLOW_EMPTY_PASSWORD: 1
volumes:
- 'mysql-transmorpher:/var/lib/mysql'
networks:
- internal
healthcheck:
test: [ "CMD", "mysqladmin", "ping", "-ppassword" ]
retries: 3
timeout: 5s
traefik:
image: traefik:mimolette
container_name: ${TRAEFIK_CONTAINER_NAME:-amigor-traefik}
ports:
- '80:80'
- '443:443'
environment:
TRAEFIK_GLOBAL_SENDANONYMOUSUSAGE: false
TRAEFIK_LOG: true
TRAEFIK_LOG_FILEPATH: '/logs/traefik.log'
TRAEFIK_LOG_LEVEL: DEBUG
TRAEFIK_API: false
TRAEFIK_CERTIFICATESRESOLVERS_PRODUCTION: true
TRAEFIK_CERTIFICATESRESOLVERS_PRODUCTION_ACME_EMAIL: 'cloud@cybex-online.com'
TRAEFIK_CERTIFICATESRESOLVERS_PRODUCTION_ACME_CASERVER: 'https://acme-v02.api.letsencrypt.org/directory'
TRAEFIK_CERTIFICATESRESOLVERS_PRODUCTION_ACME_STORAGE: '/letsencrypt/acme.json'
TRAEFIK_CERTIFICATESRESOLVERS_PRODUCTION_ACME_HTTPCHALLENGE: true
TRAEFIK_CERTIFICATESRESOLVERS_PRODUCTION_ACME_HTTPCHALLENGE_ENTRYPOINT: web
TRAEFIK_ENTRYPOINTS_WEB: true
TRAEFIK_ENTRYPOINTS_WEB_ADDRESS: ':80'
TRAEFIK_ENTRYPOINTS_WEB_HTTP: true
TRAEFIK_ENTRYPOINTS_WEB_HTTP_REDIRECTIONS_ENTRYPOINT_TO: websecure
TRAEFIK_ENTRYPOINTS_WEB_HTTP_REDIRECTIONS_ENTRYPOINT_SCHEME: https
TRAEFIK_ENTRYPOINTS_WEBSECURE: true
TRAEFIK_ENTRYPOINTS_WEBSECURE_ADDRESS: ':443'
TRAEFIK_PROVIDERS_DOCKER: true
TRAEFIK_PROVIDERS_DOCKER_EXPOSEDBYDEFAULT: false
TRAEFIK_PROVIDERS_DOCKER_NETWORK: traefik
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./amigor/storage/letsencrypt:/letsencrypt
- ./amigor/storage/logs:/logs
- ./.htpasswd:/.htpasswd:ro
networks:
- traefik
networks:
internal:
internal: true
traefik:
name: traefik
volumes:
mysql:
driver: local
mysql-transmorpher:
driver: local
app-storage:
driver: local
transmorpher-storage:
driver: local