|
|
@@ -0,0 +1,154 @@
|
|
|
+# https://www.ddmboss.com/2022/01/20/wordpress-docker-development-set-up-with-traefik-redis-and-nginx/
|
|
|
+version: '3.8'
|
|
|
+
|
|
|
+services:
|
|
|
+ nginx:
|
|
|
+ image: nginx:alpine
|
|
|
+ container_name: wp-nginx
|
|
|
+ restart: always
|
|
|
+ depends_on:
|
|
|
+ - wordpress
|
|
|
+ expose:
|
|
|
+ - 80
|
|
|
+ - 443
|
|
|
+ volumes:
|
|
|
+ - ./nginx/conf:/etc/nginx/conf.d
|
|
|
+ - ./nginx/logs:/var/log/nginx
|
|
|
+ - ./wordpress:/var/www/html
|
|
|
+ networks:
|
|
|
+ - wordpress
|
|
|
+ - proxy
|
|
|
+ labels:
|
|
|
+ - traefik.enable=true
|
|
|
+ - "traefik.docker.network=proxy"
|
|
|
+ - traefik.http.routers.wordpress.rule=Host(`${WP_URL}`, `${WP_WWW_URL}`)
|
|
|
+ #- "traefik.http.routers.wordpress.rule=Host(`${WP_URL}`) || HostRegexp(`{subdomain:[a-z0-9]+}.${WP_DOMAIN}`)"
|
|
|
+ - traefik.http.routers.wordpress.entrypoints=web
|
|
|
+ - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
|
|
|
+ - traefik.http.routers.wordpress.middlewares=redirect-to-https@docker
|
|
|
+ - traefik.http.routers.wordpress-secure.rule=Host(`${WP_URL}`, `${WP_WWW_URL}`)
|
|
|
+ #- "traefik.http.routers.wordpress-secure.rule=Host(`${WP_URL}`) || HostRegexp(`{subdomain:[a-z0-9]+}.${WP_DOMAIN}`)"
|
|
|
+ - traefik.http.routers.wordpress-secure.entrypoints=websecure
|
|
|
+ - traefik.http.routers.wordpress-secure.tls.certresolver=cloudflare
|
|
|
+
|
|
|
+ wordpress:
|
|
|
+ image: wordpress:php8.0-fpm-alpine
|
|
|
+ restart: always
|
|
|
+ container_name: wp-wordpress
|
|
|
+ depends_on:
|
|
|
+ - mariadb
|
|
|
+ - redis
|
|
|
+ expose:
|
|
|
+ - 9000
|
|
|
+ environment:
|
|
|
+ WORDPRESS_DB_HOST: mariadb
|
|
|
+ WORDPRESS_DB_NAME: ${WP_DB_NAME}
|
|
|
+ WORDPRESS_DB_USER: ${WP_DB_USER}
|
|
|
+ WORDPRESS_DB_PASSWORD: ${WP_DB_PASSWORD}
|
|
|
+ WORDPRESS_TABLE_PREFIX: ${WP_DB_PREFIX}
|
|
|
+ WORDPRESS_CONFIG_EXTRA:
|
|
|
+ define( 'WP_REDIS_HOST', 'redis' );
|
|
|
+ define( 'WP_REDIS_PORT', 6379 );
|
|
|
+ define( 'COMPRESS_CSS', true );
|
|
|
+ define( 'COMPRESS_SCRIPTS', true );
|
|
|
+ define( 'CONCATENATE_SCRIPTS', true );
|
|
|
+ /* define( 'ENFORCE_GZIP', true ); */
|
|
|
+ define( 'ENFORCE_GZIP', false );
|
|
|
+ define( 'AUTOSAVE_INTERVAL', 120 );
|
|
|
+ define( 'WP_POST_REVISIONS', 10);
|
|
|
+ define( 'MEDIA_TRASH', true );
|
|
|
+ define( 'EMPTY_TRASH_DAYS', 30 );
|
|
|
+ define( 'IMAGE_EDIT_OVERWRITE', true );
|
|
|
+ define( 'DISALLOW_FILE_EDIT', true );
|
|
|
+ define( 'MULTISITE', true );
|
|
|
+ define( 'SUBDOMAIN_INSTALL', true );
|
|
|
+ define( 'DOMAIN_CURRENT_SITE', 'wordpress.markus-spring.de' );
|
|
|
+ define( 'PATH_CURRENT_SITE', '/' );
|
|
|
+ define( 'SITE_ID_CURRENT_SITE', 1 );
|
|
|
+ define( 'BLOG_ID_CURRENT_SITE', 1 );
|
|
|
+ define('ADMIN_COOKIE_PATH', '/');
|
|
|
+ /* define('COOKIE_DOMAIN', ''); */
|
|
|
+ define('COOKIEPATH', '');
|
|
|
+ define('SITECOOKIEPATH', '');
|
|
|
+ /* define( 'WP_DEBUG_LOG', true );
|
|
|
+ define( 'WP_DEBUG_DISPLAY', false );
|
|
|
+ define( 'SAVEQUERIES', true ); */
|
|
|
+ define( 'SUNRISE', 'on' );
|
|
|
+ volumes:
|
|
|
+ - ./wordpress:/var/www/html
|
|
|
+ - ./wordpress.ini:/usr/local/etc/php/conf.d/wordpress.ini
|
|
|
+ networks:
|
|
|
+ - wordpress
|
|
|
+ - proxy
|
|
|
+
|
|
|
+ mariadb:
|
|
|
+ image: mariadb:latest
|
|
|
+ restart: always
|
|
|
+ container_name: wp-mariadb
|
|
|
+ expose:
|
|
|
+ - 3306
|
|
|
+ environment:
|
|
|
+ MYSQL_DATABASE: ${WP_DB_NAME}
|
|
|
+ MYSQL_USER: ${WP_DB_USER}
|
|
|
+ MYSQL_PASSWORD: ${WP_DB_PASSWORD}
|
|
|
+ MYSQL_RANDOM_ROOT_PASSWORD: '1'
|
|
|
+ volumes:
|
|
|
+ - mariadb:/var/lib/mysql
|
|
|
+ networks:
|
|
|
+ - wordpress
|
|
|
+
|
|
|
+ redis:
|
|
|
+ image: redis:latest
|
|
|
+ restart: always
|
|
|
+ container_name: wp-redis
|
|
|
+ expose:
|
|
|
+ - 6379
|
|
|
+ command:
|
|
|
+ - redis-server
|
|
|
+ - --save 60 1
|
|
|
+ - --loglevel warning
|
|
|
+ - --maxmemory 512mb
|
|
|
+ - --maxmemory-policy allkeys-lru
|
|
|
+ volumes:
|
|
|
+ - redis:/var/lib/redis
|
|
|
+ - redis:/data
|
|
|
+ #- ./redis.conf:/usr/local/etc/redis/redis.conf
|
|
|
+ networks:
|
|
|
+ - wordpress
|
|
|
+
|
|
|
+ phpmyadmin:
|
|
|
+ image: phpmyadmin/phpmyadmin
|
|
|
+ container_name: phpmyadmin
|
|
|
+ ports:
|
|
|
+ - "${LOCAL_PORT_DB_GUI}:80"
|
|
|
+ restart: on-failure:5
|
|
|
+ # depends_on:
|
|
|
+ # - database
|
|
|
+ environment:
|
|
|
+ PMA_HOST: "${PMA_HOST}"
|
|
|
+ # PMA_ABSOLUTE_URI: "phpmyadmin.markus-spring.de"
|
|
|
+ # PMA_USER: "${PMA_USER}"
|
|
|
+ # PMA_PASSWORD: "${PMA_PASSWORD}"
|
|
|
+ labels:
|
|
|
+ - "traefik.enable=true"
|
|
|
+ - "traefik.docker.network=proxy"
|
|
|
+ - "traefik.http.routers.phpmyadmin.rule=Host(`phpmyadmin.markus-spring.de`)" #edit domain for host
|
|
|
+ - "traefik.http.routers.phpmyadmin.priority=99"
|
|
|
+ - "traefik.http.routers.phpmyadmin.entrypoints=websecure"
|
|
|
+ - "traefik.http.routers.phpmyadmin.tls=true"
|
|
|
+ - "traefik.http.routers.phpmyadmin.tls.certresolver=cloudflare"
|
|
|
+ - "traefik.http.services.phpmyadmin.loadBalancer.server.port=80"
|
|
|
+ networks:
|
|
|
+ - proxy
|
|
|
+ - wordpress
|
|
|
+
|
|
|
+volumes:
|
|
|
+ redis:
|
|
|
+ mariadb:
|
|
|
+
|
|
|
+networks:
|
|
|
+ proxy:
|
|
|
+ external: true
|
|
|
+ wordpress:
|
|
|
+ internal: true
|
|
|
+
|