paneln8n/docker-compose.databases.yml
2025-09-11 23:01:21 +02:00

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