Magento2 docker env, с неверным направлением порта mysql - PullRequest
0 голосов
/ 01 июня 2019

Я работаю в локальной среде веб-разработчиков проектов magento 2 в докере.

Это мои важные порты:

  • NGINX_PORT = 8000
  • NGINX_SEC_PORT = 3000
  • PHPMYADMIN_PORT = 8080
  • MYSQL_PORT = 8989

Все работает mysql, доступ к mysql через phpmyadmin и доступ к проекту через предустановленный путь apache.

http://localhost/{path_to_project}/magento2/index.php

Проблема теперь в том, что есть разница между путем apache и путем nginx, к которому я обращаюсь через порт, например ::11018*

http://localhost:8000/

В обоих я добавил pdo check в index.php:

try {
    $dsn = 'mysql:host=mysql;dbname=Customer;charset=utf8;port=8989';
    $pdo = new PDO($dsn, 'user', 'password');
} catch (PDOException $e) {
    echo $e->getMessage();
}

Так что, если я иду через apache http://localhost/{path_to_project}/magento2/index.php, это показывает, что соединение с MySQL работает.

Но когда я иду через nginx http://localhost:8000/, это показывает, что соединение отказывает, потому что порт 3306 не может быть доступа, но он должен использовать порт 8989, как я описал.

Я думаю, что может быть проблема с конфигурацией nginx, но нет журналов ошибок или чего-то еще, что я могу использовать для решения этой проблемы.

Файлы:

Конфигурация Nginx:

upstream fastcgi_backend {
    server  php:9000;
}

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name localhost;
    set $MAGE_ROOT /var/www/html;
    include /var/www/html/nginx.conf.sample;

    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    #root /var/www/html;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

Докер-compose.yml:

version: '3'
services:
  app:
    image: nginx:alpine
    volumes:
      - "./docker/etc/nginx/default.conf:/etc/nginx/conf.d/default.conf"
      - "./docker/etc/ssl:/etc/ssl"
      - "${NGINX_APP_PATH}:/var/www/html"
      - "./docker/etc/nginx/default.template.conf:/etc/nginx/conf.d/default.template"
    ports:
      - "${NGINX_PORT}:80"
      - "${NGINX_SEC_PORT}:443"
    environment:
      - NGINX_HOST=${NGINX_HOST}
    command: /bin/sh -c "envsubst '$$NGINX_HOST' < /etc/nginx/conf.d/default.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
    depends_on:
      - php
      - mysqldb
  php:
    image: nanoninja/php-fpm:${PHP_VERSION}
    volumes:
      - "./docker/etc/php/php.ini:/usr/local/etc/php/conf.d/php.ini"
      - "${NGINX_APP_PATH}:/var/www/html"
  myadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - "${PHPMYADMIN_PORT}:80"
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=${MYSQL_HOST}
    depends_on:
      - mysqldb
  mysqldb:
    image: mysql:${MYSQL_VERSION}
    env_file:
      - ".env"
    environment:
      - MYSQL_DATABASE=${MYSQL_DATABASE}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - MYSQL_USER=${MYSQL_USER}
      - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    ports:
      - "${MYSQL_PORT}:3306"
    volumes:
      - "./docker/data/db/mysql:/var/lib/mysql"

  mailhog:
    container_name: mailhog
    image: mailhog/mailhog
    ports:
      - 1025:1025
      - 8025:8025

Так что если у вас есть идея или предложение, пожалуйста, свяжитесь со мной.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...