Как я могу это исправить? Это неправильная конфигурация в 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;
}
}
Спасибо Я новичок в разработке, но я стараюсь.