Markus Spring 3 лет назад
Сommit
759c82ec59
1 измененных файлов с 154 добавлено и 0 удалено
  1. 154 0
      docker-compose.yml

+ 154 - 0
docker-compose.yml

@@ -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
+