gpt4 book ai didi

mysql - 连接到 docker 内的数据库失败

转载 作者:行者123 更新时间:2023-11-29 17:12:27 25 4
gpt4 key购买 nike

我在如下环境中运行我的应用程序:

  • app_runner 镜像创建数据库并运行应用程序。
  • test_runner 镜像是 FROM app_runner,连接到第一个容器中的数据库,并连接到应用程序。
  • 机器 1 运行 app_runner
  • 机器 2 运行 test_runner

当我运行此命令时,机器 2 上的容器成功连接到应用程序,但无法连接到数据库。

runner.df

WORKDIR /opt/user/application
COPY *.sql ./
COPY app.tgz ./
EXPOSE 4210
EXPOSE 3306
RUN tar xzf app.tgz
mysql -hlocalhost -uroot --port=3306 < create_schema.sql
mysql -hlocalhost -uroot --port=3306 < create_data.sql
cd app/
./bin/app_name

test_runner.df

FROM app_runner:latest
WORKDIR /opt/user/app
COPY automated_tests/ .
CMD pybot ./Tests

机器1:

docker build --tag app_runner:latest -f runner.df .
docker run -p 4210:4210 -p 3306:3306 -itd app_runner:latest

机器2:

docker build --tag test_runner:latest -f test_runner.df .
docker run -it test_runer:latest

给出错误:

OperationalError: (2003, "Can't connect to MySQL server on '10.113.10.28' (111)")

其中 10.113.10.28 是机器 1 的 IP 地址。

最佳答案

您的第一个镜像没有启动 MySQL 数据库;它唯一启动的是主应用程序。我猜您已经安装了 MySQL,但是当您启动容器时它没有启动。

您可能应该将应用程序和数据库拆分到单独的容器中。使用数据库的标准 mysql 镜像。它有一个在首次启动时运行 SQL 文件以预填充数据库的路径。需要给应用程序镜像一个指向数据库位置的指针;如果您已经有了多主机设置,那么传递带有主机 IP 地址的环境变量可能是最简单的设置。

关于mysql - 连接到 docker 内的数据库失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51816104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com