Docker wordpress + mysql + phpmyadmin + nginx

问题描述

我试图为我的本地开发项目准备docker-compose文件,但是我一直坚持为phpmyadmin设置域。

我将主机添加到Windows上的主机文件中。

127.0.0.1 phpmyadmin.test
127.0.0.1 wordpress1.test
127.0.0.1 worpresss2.test

我的dev文件夹的结构:

dockerfiles/
   |-wordpress1
     - Dockerfile
   |-wordpress2
     - Dockerfile
.docker/nginx/conf.d/
   - nginx.conf
   - phpmyadmin.conf
sites/
docker-compose.yml

docker-compose.yml:

version: '3.7'

services:
  # Nginx Service
  nginx:
    image: nginx:1.17-alpine
    ports:
      - 80:80
    volumes:
      - ./sites:/var/www/html
      - ./.docker/nginx/conf.d:/etc/nginx/conf.d:ro
      - phpmyadmindata:/usr/src/phpmyadmin:ro
    depends_on:
      - mysql
      - phpmyadmin


  # Database
  mysql:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    volumes:
      - mysql:/var/lib/mysql


  # phpmyadmin
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:5-fpm-alpine
    restart: always
    environment:
      PMA_HOST: mysql
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - phpmyadmindata:/usr/src/phpmyadmin
    depends_on:
      - mysql

  #wordpress1
  wordpress1:
    build: ./.docker/dockerfiles/wordpress1
    restart: always
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
    volumes:
      - ./sites/wordpress1:/var/www/html/wordpress1

  #wordpress2
  wordpress2:
    build: ./.docker/dockerfiles/wordpress2
    restart: always
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_NAME: wordpress2
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
    volumes:
      - ./sites/wordpress2:/var/www/html/wordpress2

volumes:
  phpmyadmindata:
  mysql:

wordpress1的dockerfile:

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

wordpress2的dockerfile:

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

nginx.conf

server {
    listen 80;
    listen [::]:80;

    server_name wordpress1.test;
    root /var/www/html/wordpress1;

    index index.php;
  
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_pass wordpress1:9000;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|woff|woff2)$ {
        expires max;
        log_not_found off;
    }
}

server {
    listen 80;
    listen [::]:80;

    server_name wordpress2.test;
    root /var/www/html/wordpress2;

    index index.php;
  
    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_pass wordpress2:9000;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|woff|woff2)$ {
        expires max;
        log_not_found off;
    }
}

和我的phpmyadmin.conf

server {
    listen      80;
    listen      [::]:80;
    server_name phpmyadmin.test;
    root        /usr/src/phpmyadmin;
    index       index.php;

    location ~* \.php$ {
        fastcgi_pass   phpmyadmin:9000;
        include        fastcgi_params;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param  SCRIPT_NAME     $fastcgi_script_name;
    }
}

因此,域:wordpress1.test和wordpress2.test运行良好 但是当我转到phpmyadmin.test时,出现403错误,我也不知道为什么。 你能帮我吗?

顺便说一句。为什么我必须使用受写入影响的构建Dockerfile: 图片:wordpress:5.5.1-fpm

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)