我对docker和mysql有一个问题(我对docker很陌生),我正在尝试将Symfony3.4与docker一起使用。
我有这个错误:
在AbstractMysqldriver.php第103行中:
驱动程序中发生异常:SQLSTATE[HY000][2002]PHP_NETWORK_GETADDRE
SSS:getaddrinfo失败:名称未解析
在pdoConnection.php第47行中:
SQLSTATE[HY000][2002]php_network_getaddress:getaddrinfo失败:名称D
未解析
在pdoConnection.php第43行中:
SQLSTATE[HY000][2002]php_network_getaddress:getaddrinfo失败:名称D
未解析
在pdoConnection.php第43行中:
pdo::__construct():php_network_getaddress:getaddrinfo失败:Name不解析
我真的不知道该怎么办...
这是我的docker-compose:
version: "3"
services:
apache:
build: ./docker/apache/
ports:
- "80:80"
depends_on:
- php
php:
build: .
ports:
- "8080:8000"
db:
image: mysql:8.0.0
ports:
- "3306:3306"
volumes:
- /docker/database:/etc/mysql/conf.d
restart: always
environment:
- MYSQL_ROOT_PASSWORD=toor
- MYSQL_USER=me
- MYSQL_PASSWORD=pwd
- MYSQL_DATABASE=name
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_HOST=db
- PMA_PORT=3306
ports:
- "80:80"
links:
- db
我的docker文件:
FROM php:7.3-rc-zts-alpine
RUN curl -sS https://getcomposer.org/installer | \
php -- --install-dir=/usr/bin/ --filename=composer
WORKDIR /app
COPY . .
RUN COMPOSER_MEMORY_LIMIT=-1 composer install
RUN docker-php-ext-install pdo_mysql
RUN php bin/console doctrine:schema:update --force
COPY . .
EXPOSE 8080 8000
CMD ["php", "bin/console", "server:run", "0.0.0.0:8000"]
和我的symfony配置:
parameters:
database_host: db
database_port: 3306
...
运行docker-compose时,所有容器都将启动,问题是php容器启动得太快。
而在此之后,数据库服务器将需要很长时间才能启动1秒或更长时间。
php没有耐心,不会重试。
您必须执行循环以检查数据库是否已启动,在我的示例中,我使用nc-z db 3306
查看是否连接到主机的端口3306db
使用docker-compose.yml进行设置的示例
version: "3"
services:
php:
build: .
ports:
- "8080:8000"
db:
image: mysql:8.0.0
ports:
- "3306:3306"
restart: always
environment:
- MYSQL_ROOT_PASSWORD=toor
- MYSQL_USER=me
- MYSQL_PASSWORD=pwd
- MYSQL_DATABASE=name
和docker文件
FROM php:7.3-rc-zts-alpine
RUN apk update && apk add netcat-openbsd && apk add mariadb-client
CMD ["/bin/sh","-c", \
"( while ( ! nc -z db 3306 >/dev/null 2>&1 ) ; do \
date ; sleep 4 ; \
done ; \
mysql -h db -u me -ppwd name -e \"show databases\"; sleep 3600 ; ) " ]
“SQLSTATE[HY000][2002]php_network_getaddrinfo failed:Name dot not resolve”表示数据库服务器的dns名称失败。
我不确定您对database_host使用了什么,但看起来您假设symphony配置将从docker编写过程中解析“db”的位置。事实并非如此。您需要根据运行数据库容器的ip地址创建symfony配置数据库主机。当您将容器编排添加到组合中时,事情将开始变得更加复杂。您应该研究某种形式的服务发现来帮助管理此问题。
问题内容: 在Windows上安装了Docker,并额外安装了2个Oracle VM VirualBox和Kitematic。我在Windows 10 PC中禁用了Hyper-V。现在的问题是我无法从DockerHub下载任何Docker映像,甚至我都无法以如下方式运行命令 两端都显示以下错误。 尝试连接时发生错误:获取 http:// localhost:2375 / v1.21 / info
问题内容: 我在Windows Home Edition上使用docker工具带。我正在尝试使用docker- compose将Node与Redis一起使用,当我使用来运行映像(在同一源目录中)时,它运行良好,但是当我尝试使用来运行Node时,我的Node应用程序不是’无法连接到Redis。 抛出: 我相信这是因为我的节点应用程序无法找到Redis,即使当我使用该应用程序正在运行时,我也无法在相应
我拉出了mysql docker映像,并用命令运行容器: 此时,springBoot在本地工作。它与MySQL连接: 现在,我希望springBoot应用程序也在单独的docker容器上,在同一服务器上。为此,我使用了DockerFile: 同样,它无法连接到数据库:
我使用了以下命令进行端口映射 其中3306端口属于本地主机MySQL,33060是进入docker容器的端口,因此docker中的3306:33060之间正在进行通信。我的问题如下: docker:守护进程的错误响应:驱动程序未能在endpointApp1上编程外部连接(30EC933973ACF63A48EF9A20B0027AF18BD23E1F36CF852E3758EAA1F843):启动
我正在尝试使用docker-compose运行2个docker容器,并将mysql容器连接到app容器。mysql容器正在运行,但app容器无法启动,出现错误:错误:2003:无法连接到'127.0.0.1:3306'上的mysql服务器(111连接被拒绝)似乎我的app容器正在尝试连接我的主机mysql而不是mysql容器。 Docker-compose.yml DockerFile 这是我的d