Docker или symfony missconfig. ошибка SQLSTATE [HY000] [2002] php_network_getaddresses: сбой getaddrinfo: такой хост не известен - PullRequest
0 голосов
/ 20 марта 2020

Как я могу это исправить? Это неправильная конфигурация в docker -compose или, может быть, неправильная конфигурация в PHP -fpm, или я должен что-то сделать в simfony env. Я действительно не знаю, что изменить. Если я вызываю doctrine из консоли, в качестве хоста требуется localhost, а когда браузер использует pdo, хост должен иметь MySQL (имя docker)

Очень странная проблема. После нескольких часов отладки я выясняю, почему doctrine: миграция: миграция не удалась

C:\Users\Admin\Development\lemp\www\web>php bin/console doctrine:migrations:migrate 

, возвращая следующую ошибку:

An exception occurred in driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known.

Я обнаружил, что миграция при запуске работает, если я заменяю хост в файле .env:

DATABASE_URL = mysql: // пустышка: пустышка @ mysql: 3306 / пустышка? serverVersion = 5.7 с DATABASE_URL = mysql: //dummy:dummy@localhost:3306/dummy?serverVersion=5.7

Но возникла новая проблема. Для http://localhost: 8080 / требуется старый env с mysql для запуска: DATABASE_URL = mysql: // dummy: dummy @ mysql: 3306 / dummy? serverVersion = 5.7

Вы можете найти весь файл конфигурации в моем publi c репо: https://github.com/dumitriucristian/nginx-server

Это мой docker -compose.yml контент

version: '3'
# https://linoxide.com/containers/setup-lemp-stack-docker/
# http://www.inanzzz.com/index.php/post/zpbw/creating-a-simple-php-fpm-nginx-and-mysql-application-with-docker-compose
#https://www.pascallandau.com/blog/php-php-fpm-and-nginx-on-docker-in-windows-10/
#http://www.inanzzz.com/index.php/post/0e95/copying-symfony-application-into-docker-container-with-multi-stage-builds
#https://learn2torials.com/a/dockerize-reactjs-app
#https://knplabs.com/en/blog/how-to-dockerise-a-symfony-4-project
services:
  nginx:
    build:
     context: .
     dockerfile: docker/nginx/Dockerfile
    ports:
      - "8080:80"
    volumes:
     - ./nginx-server/logs:/var/log/nginx
     - ./nginx-server/default.conf:/etc/nginx/conf.d/default.conf
     - ./www/:/srv/www
    depends_on:
     - phpfpm

  phpfpm:
    build:
       context: .
       dockerfile: docker/phpfpm/Dockerfile
    ports:
     - "9000:9000"
    volumes:
     - ./www:/srv/www
     - ./docker/phpfpm/default.conf:/usr/local/etc/php-fpm.d/default.conf
    environment:
      MYSQL_USER: "dummy"
      MYSQL_PASSWORD: "dummy"

  mysql:
    image: mysql:5.7
    ports:
        - 3306:3306
    depends_on:
        - phpfpm
    environment:
        MYSQL_ROOT_PASSWORD: "dummy"
        MYSQL_DATABASE: "dummy"
        MYSQL_USER: "dummy"
        MYSQL_PASSWORD: "dummy"

  app:
    build:
      context: .
      dockerfile: docker/app/Dockerfile
    environment:
      - NODE_ENV=test
    command: npm run start
    ports:
      - 3000:3000
    volumes:
      - ./app:/app

nginx \ Dockerfile

FROM nginx:latest
RUN apt-get update && apt-get install -y unzip zlib1g-dev git curl libmcrypt-dev bcrypt nano man

COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer

WORKDIR /usr/src
RUN mkdir -p web
COPY ./www/web /usr/src/web

RUN PATH=$PATH:/web/vendor/bin:bin


EXPOSE 9000
EXPOSE 80

phpfpm \ Dockerfile

FROM php:7.4.0-fpm-alpine

RUN apk update \
 && apk add --no-cache $PHPIZE_DEPS \
    git \
    zip \
    unzip \
 && docker-php-ext-install \
    opcache \
    pdo_mysql \
 && docker-php-ext-enable \
    opcache \
 && rm -rf \
    /var/cache/apk/* \
    /var/lib/apt/lists/*

COPY ./docker/phpfpm/php.ini /usr/local/etc/php/conf.d/php.override.ini
COPY ./nginx-server/default.conf /usr/local/etc/php-fpm.d/default.conf``

и nginx default.conf

  server {
        listen       0.0.0.0:80;
        listen       [::]:80 default_server;
        server_name  _;
        root  /srv/www/web/public;
        index index.htm index.html index.php ;

        default_type text/html;

        location ~* \.php$ {
            try_files $uri $uri/ /index.php;
            fastcgi_pass   phpfpm:9000;
           #fastcgi_pass unix:/run/php/php7.4-fpm.sock;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
           #fastcgi_pass unix:/tmp/phpcgi.socket;
            fastcgi_param SCRIPT_NAME  $fastcgi_script_name;
            fastcgi_index  index.php;
            include fastcgi_params;
        }

    }

Спасибо Я новичок в разработке, но я стараюсь.

...