phpipam/docker-compose.yml
hcornet 202676c3a3
All checks were successful
Deployment Verification / deploy-and-test (push) Successful in 43s
Update : add healthcheck for mariadb / add smtp
2025-01-24 20:17:02 +01:00

142 lines
3.9 KiB
YAML

#### NETWORKS
networks:
traefik_front_network:
external: true
back_network_phpipam:
driver: bridge
attachable: true
#### SERVICES
services:
### phpipam-web
phpipam-web:
container_name: phpipam-app
hostname: phpipam-app
image: phpipam/phpipam-www:latest
networks:
- traefik_front_network
- back_network_phpipam
environment:
- TZ=Europe/Paris
- IPAM_DISABLE_INSTALLER=true
- IPAM_DATABASE_HOST=phpipam-db
- IPAM_DATABASE_USER=phpipam
- IPAM_DATABASE_NAME=phpipam
- IPAM_DATABASE_PASS=my_secret_phpipam_pass
- IPAM_DATABASE_WEBHOST=maria-db
- IPAM_TRUST_X_FORWARDED=true
restart: unless-stopped
volumes:
- ./phpipam-logo:/phpipam/css/images/logo
- ./phpipam-ca:/usr/local/share/ca-certificates:ro
depends_on:
phpipam-db:
condition: service_healthy
restart: true
msmtpd:
condition: service_healthy
restart: true
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_front_network"
# HTTP
- "traefik.http.routers.ipam-http.rule=Host(`ipam.tips-of-mine.com`)"
- "traefik.http.routers.ipam-http.entrypoints=http"
# HTTPS
- "traefik.http.routers.ipam-https.rule=Host(`ipam.tips-of-mine.com`)"
- "traefik.http.routers.ipam-https.entrypoints=https"
- "traefik.http.routers.ipam-https.service=ipam-service"
- "traefik.http.routers.ipam-https.tls=true"
# Middleware
# Service
- "traefik.http.services.ipam-service.loadbalancer.server.port=80"
### phpipam-cron
phpipam-cron:
container_name: phpipam-cron
hostname: phpipam-cron
image: phpipam/phpipam-cron:latest
networks:
- back_network_phpipam
environment:
- TZ=Europe/Paris
- IPAM_DATABASE_HOST=phpipam-db
- IPAM_DATABASE_USER=phpipam
- IPAM_DATABASE_PASS=my_secret_phpipam_pass
- SCAN_INTERVAL=1h
restart: unless-stopped
volumes:
- ./phpipam-ca:/usr/local/share/ca-certificates:ro
depends_on:
- phpipam-db
### phpipam-db
phpipam-db:
container_name: phpipam-db
hostname: phpipam-db
image: mariadb:latest
networks:
- back_network_phpipam
environment:
- MYSQL_USER=phpipam
- MYSQL_PASSWORD=my_secret_phpipam_pass
- MYSQL_DATABASE=phpipam
- MYSQL_ROOT_PASSWORD=my_secret_mysql_root_pass
restart: unless-stopped
volumes:
- ./phpipam-db-data:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
start_period: 10s
interval: 10s
timeout: 5s
retries: 3
###
phpipam-db-backup:
container_name: phpipam-db-backup
hostname: phpipam-db-backup
image: mariadb:10
volumes:
- ./phpipam-dump:/dump
- /etc/localtime:/etc/localtime:ro
entrypoint: |
bash -c 'bash -s <<EOF
trap "break;exit" SIGHUP SIGINT SIGTERM
sleep 2m
while /bin/true; do
mysqldump -h db --all-databases | gzip -c > /dump/dump_\`date +%d-%m-%Y"_"%H_%M_%S\`.sql.gz
(ls -t /dump/dump*.sql.gz|head -n $$BACKUP_NUM_KEEP;ls /dump/dump*.sql.gz)|sort|uniq -u|xargs rm -- {}
sleep $$BACKUP_FREQUENCY
done
EOF'
networks:
- back_network_phpipam
### phpipam
msmtpd:
container_name: phpipam-msmtpd
hostname: phpipam-msmtpd
image: crazymax/msmtpd:latest
networks:
- back_network_phpipam
environment:
- "TZ=Europe/Paris"
- "PUID=1500"
- "PGID=1500"
- "SMTP_HOST=10.0.4.52"
- "SMTP_PORT=587"
- "SMTP_TLS=on"
- "SMTP_STARTTLS=on"
- "SMTP_TLS_CHECKCERT=off"
- "SMTP_AUTH=on"
- "SMTP_USER=hostinfo@tips-of-mine.fr"
- "SMTP_PASSWORD=Whf2VtLEd2QR4er"
- "SMTP_DOMAIN=localhost"
- "SMTP_FROM=hostinfo@tips-of-mine.fr"
restart: always
healthcheck:
test: ["CMD-SHELL", "echo EHLO localhost"]
interval: 5s
timeout: 5s
retries: 5