Docker WordPress + MySQL + phpmyadmin + nginx

rwqw0loc  于 2023-11-19  发布在  PHP
关注(0)|答案(1)|浏览(263)

我试图为我的本地开发项目准备docker-compose文件,但我坚持为phpmyadmin设置域。
我在windows上添加了主机到主机文件。

  1. 127.0.0.1 phpmyadmin.test
  2. 127.0.0.1 wordpress1.test
  3. 127.0.0.1 worpresss2.test

字符串
我的dev文件夹的结构:

  1. dockerfiles/
  2. |-wordpress1
  3. - Dockerfile
  4. |-wordpress2
  5. - Dockerfile
  6. .docker/nginx/conf.d/
  7. - nginx.conf
  8. - phpmyadmin.conf
  9. sites/
  10. docker-compose.yml


docker-compose.yml:

  1. version: '3.7'
  2. services:
  3. # Nginx Service
  4. nginx:
  5. image: nginx:1.17-alpine
  6. ports:
  7. - 80:80
  8. volumes:
  9. - ./sites:/var/www/html
  10. - ./.docker/nginx/conf.d:/etc/nginx/conf.d:ro
  11. - phpmyadmindata:/usr/src/phpmyadmin:ro
  12. depends_on:
  13. - mysql
  14. - phpmyadmin
  15. # Database
  16. mysql:
  17. image: mysql:5.7
  18. restart: always
  19. environment:
  20. MYSQL_ROOT_PASSWORD: root
  21. MYSQL_DATABASE: wordpress
  22. MYSQL_USER: wordpress
  23. MYSQL_PASSWORD: wordpress
  24. volumes:
  25. - mysql:/var/lib/mysql
  26. # phpmyadmin
  27. phpmyadmin:
  28. image: phpmyadmin/phpmyadmin:5-fpm-alpine
  29. restart: always
  30. environment:
  31. PMA_HOST: mysql
  32. MYSQL_ROOT_PASSWORD: root
  33. volumes:
  34. - phpmyadmindata:/usr/src/phpmyadmin
  35. depends_on:
  36. - mysql
  37. #wordpress1
  38. wordpress1:
  39. build: ./.docker/dockerfiles/wordpress1
  40. restart: always
  41. environment:
  42. WORDPRESS_DB_HOST: mysql
  43. WORDPRESS_DB_NAME: wordpress
  44. WORDPRESS_DB_USER: wordpress
  45. WORDPRESS_DB_PASSWORD: wordpress
  46. volumes:
  47. - ./sites/wordpress1:/var/www/html/wordpress1
  48. #wordpress2
  49. wordpress2:
  50. build: ./.docker/dockerfiles/wordpress2
  51. restart: always
  52. environment:
  53. WORDPRESS_DB_HOST: mysql
  54. WORDPRESS_DB_NAME: wordpress2
  55. WORDPRESS_DB_USER: wordpress
  56. WORDPRESS_DB_PASSWORD: wordpress
  57. volumes:
  58. - ./sites/wordpress2:/var/www/html/wordpress2
  59. volumes:
  60. phpmyadmindata:
  61. mysql:


dockerfile for wordpress1:

  1. FROM wordpress:5.5.1-php7.4-fpm
  2. WORKDIR /var/www/html/wordpress1


dockerfile for wordpress2:

  1. FROM wordpress:5.5.1-php7.4-fpm
  2. WORKDIR /var/www/html/wordpress2


nginx.conf

  1. server {
  2. listen 80;
  3. listen [::]:80;
  4. server_name wordpress1.test;
  5. root /var/www/html/wordpress1;
  6. index index.php;
  7. location = /favicon.ico {
  8. log_not_found off;
  9. access_log off;
  10. }
  11. location = /robots.txt {
  12. allow all;
  13. log_not_found off;
  14. access_log off;
  15. }
  16. location / {
  17. try_files $uri $uri/ /index.php?$args;
  18. }
  19. location ~ \.php$ {
  20. include fastcgi_params;
  21. fastcgi_intercept_errors on;
  22. fastcgi_pass wordpress1:9000;
  23. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  24. }
  25. location ~* \.(js|css|png|jpg|jpeg|gif|ico|woff|woff2)$ {
  26. expires max;
  27. log_not_found off;
  28. }
  29. }
  30. server {
  31. listen 80;
  32. listen [::]:80;
  33. server_name wordpress2.test;
  34. root /var/www/html/wordpress2;
  35. index index.php;
  36. location = /favicon.ico {
  37. log_not_found off;
  38. access_log off;
  39. }
  40. location = /robots.txt {
  41. allow all;
  42. log_not_found off;
  43. access_log off;
  44. }
  45. location / {
  46. try_files $uri $uri/ /index.php?$args;
  47. }
  48. location ~ \.php$ {
  49. include fastcgi_params;
  50. fastcgi_intercept_errors on;
  51. fastcgi_pass wordpress2:9000;
  52. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  53. }
  54. location ~* \.(js|css|png|jpg|jpeg|gif|ico|woff|woff2)$ {
  55. expires max;
  56. log_not_found off;
  57. }
  58. }


我的phpmyadmin.conf

  1. server {
  2. listen 80;
  3. listen [::]:80;
  4. server_name phpmyadmin.test;
  5. root /usr/src/phpmyadmin;
  6. index index.php;
  7. location ~* \.php$ {
  8. fastcgi_pass phpmyadmin:9000;
  9. include fastcgi_params;
  10. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  11. fastcgi_param SCRIPT_NAME $fastcgi_script_name;
  12. }
  13. }


所以,域:wordpress1.test和wordpress2.test工作正常,但当我去phpmyadmin。测试我得到403错误,我不知道,为什么。你能帮助我吗?
顺便说一句.为什么我必须使用构建Dockerfiles而不是写:图像:WordPress:5.5.1-fpm

rsaldnfx

rsaldnfx1#

我认为phpmyadmin,wordpress1和wordpress2都使用相同的默认端口80。
尝试修改compose文件,为这三个容器分配唯一的端口。例如,

  1. ports: #for wordpress1 container
  2. - 81:80
  3. ports: #for wordpress2 container
  4. - 82:80
  5. ports: #for phpmyadmin container
  6. - 83:80

字符串
最后编辑nginx配置文件以反映这些端口[81,82和82]。

相关问题