191 lines
5.9 KiB
YAML
191 lines
5.9 KiB
YAML
version: "3.8"
|
|
|
|
services:
|
|
db:
|
|
image: mariadb:10.11
|
|
container_name: p2p-db
|
|
restart: unless-stopped
|
|
command: --max-connections=300 --wait-timeout=300 --interactive-timeout=300
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: p2p_secure_root_2025
|
|
volumes:
|
|
- db_data:/var/lib/mysql
|
|
- ./init-db:/docker-entrypoint-initdb.d
|
|
networks:
|
|
- p2p-internal
|
|
healthcheck:
|
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
|
|
wiki:
|
|
image: mediawiki:1.41
|
|
container_name: p2p-wiki
|
|
restart: unless-stopped
|
|
environment:
|
|
- MEDIAWIKI_DB_HOST=db
|
|
- MEDIAWIKI_DB_NAME=p2p_wiki
|
|
- MEDIAWIKI_DB_USER=p2p_wiki
|
|
- MEDIAWIKI_DB_PASSWORD=wiki_secure_2025
|
|
volumes:
|
|
- wiki_data:/var/www/html/images
|
|
- ./wiki-config:/var/www/html/config
|
|
- ./robots-wiki.txt:/var/www/html/robots.txt:ro
|
|
- ./block-bots.conf:/etc/apache2/conf-enabled/block-bots.conf:ro
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.p2p-wiki.rule=Host(`wiki.p2pfoundation.net`)"
|
|
- "traefik.http.services.p2p-wiki.loadbalancer.server.port=80"
|
|
networks:
|
|
- p2p-internal
|
|
- traefik-public
|
|
|
|
blog:
|
|
image: wordpress:6.4-php8.2-apache
|
|
container_name: p2p-blog
|
|
restart: unless-stopped
|
|
environment:
|
|
WORDPRESS_DB_HOST: db
|
|
WORDPRESS_DB_NAME: p2p_blog
|
|
WORDPRESS_DB_USER: p2p_blog
|
|
WORDPRESS_DB_PASSWORD: blog_secure_2025
|
|
volumes:
|
|
- blog_data:/var/www/html
|
|
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini:ro
|
|
- ./robots.txt:/var/www/html/robots.txt:ro
|
|
- ./block-bots.conf:/etc/apache2/conf-enabled/block-bots.conf:ro
|
|
- ./rdata-analytics.php:/var/www/html/wp-content/mu-plugins/rdata-analytics.php:ro
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.p2p-blog.rule=Host(`blog.p2pfoundation.net`) || Host(`www.blog.p2pfoundation.net`)"
|
|
- "traefik.http.services.p2p-blog.loadbalancer.server.port=80"
|
|
networks:
|
|
- p2p-internal
|
|
- traefik-public
|
|
|
|
bloggr:
|
|
image: wordpress:6.4-php8.2-apache
|
|
container_name: p2p-bloggr
|
|
restart: unless-stopped
|
|
environment:
|
|
WORDPRESS_DB_HOST: db
|
|
WORDPRESS_DB_NAME: p2p_bloggr
|
|
WORDPRESS_DB_USER: p2p_bloggr
|
|
WORDPRESS_DB_PASSWORD: bloggr_secure_2025
|
|
volumes:
|
|
- bloggr_data:/var/www/html
|
|
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini:ro
|
|
- ./robots.txt:/var/www/html/robots.txt:ro
|
|
- ./block-bots.conf:/etc/apache2/conf-enabled/block-bots.conf:ro
|
|
- ./rdata-analytics.php:/var/www/html/wp-content/mu-plugins/rdata-analytics.php:ro
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.p2p-bloggr.rule=Host(`bloggr.p2pfoundation.net`)"
|
|
- "traefik.http.services.p2p-bloggr.loadbalancer.server.port=80"
|
|
networks:
|
|
- p2p-internal
|
|
- traefik-public
|
|
|
|
blogfr:
|
|
image: wordpress:6.4-php8.2-apache
|
|
container_name: p2p-blogfr
|
|
restart: unless-stopped
|
|
environment:
|
|
WORDPRESS_DB_HOST: db
|
|
WORDPRESS_DB_NAME: p2p_blogfr
|
|
WORDPRESS_DB_USER: p2p_blogfr
|
|
WORDPRESS_DB_PASSWORD: blogfr_secure_2025
|
|
volumes:
|
|
- blogfr_data:/var/www/html
|
|
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini:ro
|
|
- ./robots.txt:/var/www/html/robots.txt:ro
|
|
- ./block-bots.conf:/etc/apache2/conf-enabled/block-bots.conf:ro
|
|
- ./rdata-analytics.php:/var/www/html/wp-content/mu-plugins/rdata-analytics.php:ro
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.p2p-blogfr.rule=Host(`blogfr.p2pfoundation.net`)"
|
|
- "traefik.http.services.p2p-blogfr.loadbalancer.server.port=80"
|
|
networks:
|
|
- p2p-internal
|
|
- traefik-public
|
|
|
|
blognl:
|
|
image: wordpress:6.4-php8.2-apache
|
|
container_name: p2p-blognl
|
|
restart: unless-stopped
|
|
environment:
|
|
WORDPRESS_DB_HOST: db
|
|
WORDPRESS_DB_NAME: p2p_blognl
|
|
WORDPRESS_DB_USER: p2p_blognl
|
|
WORDPRESS_DB_PASSWORD: blognl_secure_2025
|
|
volumes:
|
|
- blognl_data:/var/www/html
|
|
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini:ro
|
|
- ./robots.txt:/var/www/html/robots.txt:ro
|
|
- ./block-bots.conf:/etc/apache2/conf-enabled/block-bots.conf:ro
|
|
- ./rdata-analytics.php:/var/www/html/wp-content/mu-plugins/rdata-analytics.php:ro
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.p2p-blognl.rule=Host(`blognl.p2pfoundation.net`)"
|
|
- "traefik.http.services.p2p-blognl.loadbalancer.server.port=80"
|
|
networks:
|
|
- p2p-internal
|
|
- traefik-public
|
|
|
|
web:
|
|
image: wordpress:6.4-php8.2-apache
|
|
container_name: p2p-web
|
|
restart: unless-stopped
|
|
environment:
|
|
WORDPRESS_DB_HOST: db
|
|
WORDPRESS_DB_NAME: p2p_web
|
|
WORDPRESS_DB_USER: p2p_web
|
|
WORDPRESS_DB_PASSWORD: web_secure_2025
|
|
volumes:
|
|
- web_data:/var/www/html
|
|
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini:ro
|
|
- ./robots.txt:/var/www/html/robots.txt:ro
|
|
- ./block-bots.conf:/etc/apache2/conf-enabled/block-bots.conf:ro
|
|
- ./rdata-analytics.php:/var/www/html/wp-content/mu-plugins/rdata-analytics.php:ro
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.p2p-web.rule=Host(`p2pfoundation.net`) || Host(`www.p2pfoundation.net`)"
|
|
- "traefik.http.services.p2p-web.loadbalancer.server.port=80"
|
|
networks:
|
|
- p2p-internal
|
|
- traefik-public
|
|
|
|
volumes:
|
|
db_data:
|
|
wiki_data:
|
|
blog_data:
|
|
bloggr_data:
|
|
blogfr_data:
|
|
blognl_data:
|
|
web_data:
|
|
|
|
networks:
|
|
p2p-internal:
|
|
driver: bridge
|
|
traefik-public:
|
|
external: true
|