gpt4 book ai didi

php - 从一个容器到另一个容器访问服务

转载 作者:行者123 更新时间:2023-11-28 23:20:24 25 4
gpt4 key购买 nike

我正在关注来自 here 的 docker web 应用程序设置教程.如 docker-compose.yml 文件中所述,MySQL 容器已链接到应用程序,可通过 index.phpphpMyAdmin。到目前为止没问题。

当我使用 docker exec -it container-id bash 为我的应用程序打开一个交互式 shell 并尝试访问 MySQL 服务时,但我不能。我在这里错过了什么?

Edit1:当我输入 MySQL 时,我得到 bash: mysql: command not found

Edit2: docker ps

的输出
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                  NAMES
1643f0ba5637 dockertutorial_php "docker-php-entryp..." 9 seconds ago Up 6 seconds 9000/tcp dockertutorial_php_1
610f2c8bf4c4 phpmyadmin/phpmyadmin "/run.sh phpmyadmin" 9 seconds ago Up 6 seconds 0.0.0.0:8080->80/tcp dockertutorial_phpmyadmin_1
29c552da473b mysql:latest "docker-entrypoint..." 10 seconds ago Up 8 seconds 3306/tcp dockertutorial_mysql_1

Edit3:也许我应该从这里开始。对于造成/将造成的所有困惑,我深表歉意(尤其是@Jay Blanchard 和@mkasberg)。我想在创建 MySQL 数据库的 nginx 容器中运行一个 bash 脚本。如果我在 nginx 容器中安装了 MySQL,它会工作,但如果它是一个单独的容器,则不会。是否有可能用目前的方法来实现?如果不是应该怎么改正?

最佳答案

mysql: command not found 表示 mysql 客户端二进制文件在您登录的任何容器中都不可用。我怀疑您正在 MySQL 以外的容器上运行 docker exec。二进制文件将存在于 MySQL 容器中。虽然那些其他容器可以连接 MySQL,但它们有可用的 MySQL 命令行应用程序(以保持较小的图像大小)。

确保您使用 docker exec 命令连接到 MySQL 容器并且它应该可以工作。事实上,docker-compose 为您提供了一种方法来执行此操作。在您的服务运行时(在执行 docker-compose up 之后),试试这个:

$ docker-compose exec mysql /bin/bash

这应该会让您进入 mysql 容器中的 bash 提示符。之前,您会在 nginx 容器中看到 bash 提示符。无法在命令行上运行mysql

关于php - 从一个容器到另一个容器访问服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41963113/

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