我正在关注this fiddle的docker Web应用程序设置教程。如docker-compose.yml
文件中所述,MySQL
容器已链接到应用,并且可通过index.php
和phpMyAdmin
访问。到目前为止没问题。
当我使用docker exec -it container-id bash
打开我的应用程序的交互式shell并尝试访问MySQL
服务但我无法访问时。我在这里错过了什么?
修改1:当我输入MySQL
时,我得到bash: mysql: command not found
。
编辑2: 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
编辑3:也许我应该从这开始。我为造成/将导致的所有混乱道歉(特别是对@Jay Blanchard& @mkasberg)。我想在nginx容器中运行一个bash脚本,它创建一个MySQL数据库。如果我在nginx容器中安装了MySQL,但是如果它是一个单独的容器则不行。是否有可能用现有方法实现?如果不是我应该如何纠正它?
答案 0 :(得分:1)
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
。