119 lines
3.0 KiB
YAML
119 lines
3.0 KiB
YAML
# Services
|
|
services:
|
|
|
|
# MySQL 5.7.22 database
|
|
mysql:
|
|
image: mysql:5.7.22
|
|
env_file:
|
|
- ./.env
|
|
- ./.env.docker
|
|
networks:
|
|
- app
|
|
volumes:
|
|
- ./docker/mysql:/var/lib/mysql
|
|
- ./docker/templates/my.cnf:/etc/mysql/my.cnf
|
|
ports:
|
|
- ${MYSQL_VPORT}:3306
|
|
ulimits:
|
|
nofile:
|
|
soft: 262144
|
|
hard: 262144
|
|
restart: unless-stopped
|
|
|
|
# # phpMyAdmin
|
|
# phpmyadmin:
|
|
# image: phpmyadmin/phpmyadmin
|
|
# env_file:
|
|
# - ./.env
|
|
# - ./.env.docker
|
|
# ports:
|
|
# - ${PMA_VPORT}:80
|
|
# environment:
|
|
# - VIRTUAL_HOST=pma.${VHOST}
|
|
# - PMA_HOST=${MYSQL_HOST}
|
|
# labels:
|
|
# - 'traefik.enable=true'
|
|
# - 'traefik.http.routers.pmatradineur.rule=Host(`pma.${VHOST}`)'
|
|
# - 'traefik.http.routers.pmatradineur.service=pmatradineur-service'
|
|
# - 'traefik.http.routers.pmatradineur.entrypoints=websecure'
|
|
# - 'traefik.http.routers.pmatradineur.tls=true'
|
|
# # - 'traefik.http.routers.pmatradineur.tls.certresolver=letsencryptresolver'
|
|
# - 'traefik.http.services.pmatradineur-service.loadbalancer.server.port=80'
|
|
# networks:
|
|
# - app
|
|
# - default
|
|
# depends_on:
|
|
# - mysql
|
|
# phpMyAdmin
|
|
|
|
adminer:
|
|
image: adminer
|
|
env_file:
|
|
- ./.env
|
|
- ./.env.docker
|
|
ports:
|
|
- ${PMA_VPORT}:8080
|
|
environment:
|
|
- VIRTUAL_HOST=pma.${VHOST}
|
|
- PMA_HOST=${MYSQL_HOST}
|
|
labels:
|
|
- 'traefik.enable=true'
|
|
- 'traefik.http.routers.pmapaneln8n.rule=Host(`pma.${VHOST}`)'
|
|
- 'traefik.http.routers.pmapaneln8n.service=pmapaneln8n-service'
|
|
- 'traefik.http.routers.pmapaneln8n.entrypoints=websecure'
|
|
- 'traefik.http.routers.pmapaneln8n.tls=true'
|
|
- 'traefik.http.services.pmapaneln8n-service.loadbalancer.server.port=8080'
|
|
networks:
|
|
- app
|
|
- default
|
|
depends_on:
|
|
- mysql
|
|
|
|
# Backup
|
|
backup:
|
|
image: mysql:5.7.22
|
|
env_file:
|
|
- ./.env
|
|
- ./.env.docker
|
|
depends_on:
|
|
- mysql
|
|
command: >
|
|
/bin/sh -c "
|
|
echo '[client]' > /root/.my.cnf ;
|
|
echo 'user=root' >> /root/.my.cnf ;
|
|
echo 'password=${MYSQL_ROOT_PASSWORD}' >> /root/.my.cnf ;
|
|
echo 'host=${MYSQL_HOST}' >> /root/.my.cnf ;
|
|
mysqldump --defaults-extra-file=/root/.my.cnf $$MYSQL_DATABASE | gzip > /backup/$$MYSQL_DATABASE-$$(date '+%Y-%m-%d').sql.gz ;
|
|
cp /backup/$$MYSQL_DATABASE-$$(date '+%Y-%m-%d').sql.gz /backup/latest.sql.gz
|
|
"
|
|
networks:
|
|
- app
|
|
volumes:
|
|
- ./docker/backup:/backup
|
|
|
|
# Restore
|
|
restore:
|
|
image: mysql:5.7.22
|
|
env_file:
|
|
- ./.env
|
|
- ./.env.docker
|
|
depends_on:
|
|
- mysql
|
|
command: >
|
|
/bin/sh -c "
|
|
exec gunzip < /backup/latest.sql.gz | mysql -u $$MYSQL_USER --password=$$MYSQL_ROOT_PASSWORD -h $$DB_HOST $$MYSQL_DATABASE
|
|
"
|
|
networks:
|
|
- app
|
|
volumes:
|
|
- ./docker/backup:/backup
|
|
|
|
# Docker Networks
|
|
networks:
|
|
default:
|
|
name: nginx-proxy
|
|
external: true
|
|
app:
|
|
driver: bridge
|
|
|