docker-compose.yml 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. # $Id: docker-compose.yml,v 1.6 2022/06/22 11:58:38 springm Exp springm $
  2. # $Revision: 1.6 $
  3. # $Date: 2022/06/22 11:58:38 $
  4. # $Log: docker-compose.yml,v $
  5. # Revision 1.6 2022/06/22 11:58:38 springm
  6. # Summary: Running version before integrating Matomo
  7. #
  8. # Revision 1.5 2022/06/05 09:29:36 springm
  9. # Summary: DISABLE_WP_CRON eingefügt
  10. #
  11. #
  12. # Revision 1.4 2022/06/05 06:26:37 springm
  13. # Summary: define COOKIE_DOMAIN auf $$_SERVER... hinzugefügt. Behebt
  14. # Cookie-Fehlermeldung beim Einloggen
  15. #
  16. # Revision 1.3 2022/06/05 05:44:06 springm
  17. # Summary: ADMIN_COOKIE_PATH auskommentiert
  18. # Weitere Cookie-Variablen auskommentiert
  19. #
  20. # Revision 1.2 2022/06/05 05:29:29 springm
  21. # Summary: RCS-Header eingefügt
  22. #
  23. #
  24. # from https://www.ddmboss.com/2022/01/20/wordpress-docker-development-set-up-with-traefik-redis-and-nginx/
  25. version: '3.8'
  26. services:
  27. nginx:
  28. image: nginx:alpine
  29. container_name: wp-matomo-nginx
  30. restart: always
  31. depends_on:
  32. - wordpress-fpm
  33. - matomo-fpm
  34. expose:
  35. - 80
  36. - 443
  37. volumes:
  38. - ./conf:/etc/nginx/conf.d
  39. - ./logs:/var/log/nginx
  40. - ./wordpress:/var/www/html
  41. - ./matomo:/var/www/matomo
  42. networks:
  43. - wordpress
  44. - proxy
  45. labels:
  46. - traefik.enable=true
  47. - "traefik.docker.network=proxy"
  48. - traefik.http.routers.wordpress.rule=Host(`${WP_URL}`, `${WP_WWW_URL}`)
  49. #- "traefik.http.routers.wordpress.rule=Host(`${WP_URL}`) || HostRegexp(`{subdomain:[a-z0-9]+}.${WP_DOMAIN}`)"
  50. - traefik.http.routers.wordpress.entrypoints=web
  51. - traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
  52. - traefik.http.routers.wordpress.middlewares=redirect-to-https@docker
  53. - traefik.http.routers.wordpress-secure.rule=Host(`${WP_URL}`, `${WP_WWW_URL}`)
  54. #- "traefik.http.routers.wordpress-secure.rule=Host(`${WP_URL}`) || HostRegexp(`{subdomain:[a-z0-9]+}.${WP_DOMAIN}`)"
  55. - traefik.http.routers.wordpress-secure.entrypoints=websecure
  56. - traefik.http.routers.wordpress-secure.tls.certresolver=cloudflare
  57. wp-fpm:
  58. image: wordpress:php8.0-fpm-alpine
  59. restart: always
  60. container_name: wp-fpm
  61. depends_on:
  62. - mariadb
  63. - redis
  64. expose:
  65. - 9000
  66. environment:
  67. WORDPRESS_DB_HOST: mariadb
  68. WORDPRESS_DB_NAME: ${WP_DB_NAME}
  69. WORDPRESS_DB_USER: ${WP_DB_USER}
  70. WORDPRESS_DB_PASSWORD: ${WP_DB_PASSWORD}
  71. WORDPRESS_TABLE_PREFIX: ${WP_DB_PREFIX}
  72. WORDPRESS_CONFIG_EXTRA:
  73. define( 'WP_REDIS_HOST', 'redis' );
  74. define( 'WP_REDIS_PORT', 6379 );
  75. define( 'COMPRESS_CSS', true );
  76. define( 'COMPRESS_SCRIPTS', true );
  77. define( 'CONCATENATE_SCRIPTS', true );
  78. /* define( 'ENFORCE_GZIP', true ); */
  79. define( 'ENFORCE_GZIP', false );
  80. define( 'AUTOSAVE_INTERVAL', 120 );
  81. define( 'WP_POST_REVISIONS', 10);
  82. define( 'MEDIA_TRASH', true );
  83. define( 'EMPTY_TRASH_DAYS', 30 );
  84. define( 'IMAGE_EDIT_OVERWRITE', true );
  85. define( 'DISALLOW_FILE_EDIT', true );
  86. define( 'MULTISITE', true );
  87. define( 'SUBDOMAIN_INSTALL', true );
  88. define( 'DOMAIN_CURRENT_SITE', 'wordpress.markus-spring.de' );
  89. define( 'PATH_CURRENT_SITE', '/' );
  90. define( 'SITE_ID_CURRENT_SITE', 1 );
  91. define( 'BLOG_ID_CURRENT_SITE', 1 );
  92. /* define('ADMIN_COOKIE_PATH', '/'); */
  93. /* define('COOKIE_DOMAIN', ''); */
  94. /* define('COOKIEPATH', ''); */
  95. /* define('SITECOOKIEPATH', ''); */
  96. /* define( 'WP_DEBUG_LOG', true );
  97. define( 'WP_DEBUG_DISPLAY', false );
  98. define( 'SAVEQUERIES', true ); */
  99. /* https://wp-staging.com/how-to-fix-the-error-cookies-are-blocked-or-not-supported-by-your-browser/ */
  100. define('COOKIE_DOMAIN', $$_SERVER['HTTP_HOST'] );
  101. /* define( 'SUNRISE', 'on' ); */
  102. define('DISABLE_WP_CRON', true);
  103. volumes:
  104. - ./wordpress:/var/www/html
  105. - ./wordpress.ini:/usr/local/etc/php/conf.d/wordpress.ini
  106. networks:
  107. - wordpress
  108. - proxy
  109. matomo-fpm:
  110. image: matomo:fpm-alpine
  111. #image: wordpress:php8.0-fpm-alpine
  112. container_name: matomo-fpm
  113. restart: unless-stopped
  114. depends_on:
  115. - mariadb
  116. volumes:
  117. - ./matomo:/var/www/matomo
  118. environment:
  119. - MATOMO_DATABASE_HOST=mariadb
  120. - MATOMO_DATABASE_ADAPTER=mariadb
  121. - MATOMO_DATABASE_TABLES_PREFIX=${MATOMO_DATABASE_TABLES_PREFIX}
  122. - MATOMO_DATABASE_USERNAME=${MYSQL_USER}
  123. - MATOMO_DATABASE_PASSWORD=${MYSQL_PASSWORD}
  124. - MATOMO_DATABASE_DBNAME=${MYSQL_DATABASE}
  125. networks:
  126. - wordpress
  127. - proxy
  128. mariadb:
  129. image: mariadb:latest
  130. restart: always
  131. container_name: wp-mariadb
  132. expose:
  133. - 3306
  134. environment:
  135. MYSQL_DATABASE: ${WP_DB_NAME}
  136. MYSQL_USER: ${WP_DB_USER}
  137. MYSQL_PASSWORD: ${WP_DB_PASSWORD}
  138. # MYSQL_RANDOM_ROOT_PASSWORD: '1'
  139. volumes:
  140. - mariadb:/var/lib/mysql
  141. networks:
  142. - wordpress
  143. # for resetting the root password
  144. # https://gist.github.com/rordi/ab55c92848fd06884172ed22ae88d7df
  145. # entrypoint: mysqld_safe --skip-grant-tables --user=mysql
  146. redis:
  147. image: redis:6.2.7
  148. restart: unless-stopped
  149. container_name: wp-redis
  150. expose:
  151. - 6379
  152. command:
  153. - redis-server
  154. - --loglevel warning
  155. - --maxmemory 512mb
  156. - --maxmemory-policy allkeys-lru
  157. - --save 60 1
  158. volumes:
  159. - redis:/var/lib/redis
  160. - redis:/data
  161. #- ./redis.conf:/usr/local/etc/redis/redis.conf
  162. networks:
  163. - wordpress
  164. # phpmyadmin:
  165. # image: phpmyadmin/phpmyadmin
  166. # container_name: phpmyadmin
  167. # ports:
  168. # - "${LOCAL_PORT_DB_GUI}:80"
  169. # restart: on-failure:5
  170. # # depends_on:
  171. # # - database
  172. # environment:
  173. # PMA_HOST: "${PMA_HOST}"
  174. # # PMA_ABSOLUTE_URI: "phpmyadmin.markus-spring.de"
  175. # # PMA_USER: "${PMA_USER}"
  176. # # PMA_PASSWORD: "${PMA_PASSWORD}"
  177. # labels:
  178. # - "traefik.enable=true"
  179. # - "traefik.docker.network=proxy"
  180. # - "traefik.http.routers.phpmyadmin.rule=Host(`phpmyadmin.markus-spring.de`)" #edit domain for host
  181. # - "traefik.http.routers.phpmyadmin.priority=99"
  182. # - "traefik.http.routers.phpmyadmin.entrypoints=websecure"
  183. # - "traefik.http.routers.phpmyadmin.tls=true"
  184. # - "traefik.http.routers.phpmyadmin.tls.certresolver=cloudflare"
  185. # - "traefik.http.services.phpmyadmin.loadBalancer.server.port=80"
  186. # networks:
  187. # - proxy
  188. # - wordpress
  189. volumes:
  190. redis:
  191. mariadb:
  192. networks:
  193. proxy:
  194. external: true
  195. wordpress:
  196. internal: true
  197. #
  198. # docker-compose.yml ends here