Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
试图在mysql和web服务器之间建立连接,但在Dockerfile的帮助下出错_Mysql_Apache_Docker_Dockerfile - Fatal编程技术网

试图在mysql和web服务器之间建立连接,但在Dockerfile的帮助下出错

试图在mysql和web服务器之间建立连接,但在Dockerfile的帮助下出错,mysql,apache,docker,dockerfile,Mysql,Apache,Docker,Dockerfile,我正在尝试连接两台服务器,一台是数据库(mysql),另一台是Web服务器(httpd)。在docker中,使用dockerfile创建的映像,创建了两个容器并在其中运行代码。两者都在运行,web服务器前端代码工作正常,当我试图输入数据时,出现了错误。我在/var/log/httpd/error\u log中查找-->mysql连接找不到主机“数据”。 我想知道如何在web服务器中定义数据库主机?由于2 Dockerfile连接问题,两个IP地址位于同一子网中。主要问题是什么?容器必须位于同一d

我正在尝试连接两台服务器,一台是数据库(mysql),另一台是Web服务器(httpd)。在docker中,使用dockerfile创建的映像,创建了两个容器并在其中运行代码。两者都在运行,web服务器前端代码工作正常,当我试图输入数据时,出现了错误。我在/var/log/httpd/error\u log中查找-->mysql连接找不到主机“数据”。
我想知道如何在web服务器中定义数据库主机?由于2 Dockerfile连接问题,两个IP地址位于同一子网中。主要问题是什么?

容器必须位于同一docker网络中,主机名是服务名(默认情况下)

我建议您使用设计用于运行多个容器(它们之间有链接)的

事先,我会在docker-compose.yml中制作类似的内容:

version: '2.4'

services:

  db:
    build:
      context: .
      dockerfile: db.dockerfile
    environment:
      - MYSQL_ROOT_PASSWORD=foo

  web:
    build:
      context: .
      dockerfile: web.dockerfile
然后,键入
docker compose up-d
。最后,从web容器,您将能够访问主机“db”

如果你只想使用dockerfiles,也可以验证我在这篇文章中的第一句话。默认情况下,容器位于网络
网桥
,因此您的容器可能位于同一网络中,但您必须将它们链接起来,以便进行通信。启动
db
容器后,必须使用以下选项运行
web
容器:

docker run ... --link <db_container_name>:<db_host_name_in_web_container> ...
docker运行--链接:。。。

因此,您可以从
web

访问
db
,我很感激,但我想从dockerfile执行。我已经从docker compose执行并成功执行了,但是否可能从dockerfile单独执行相同的操作??