我正在使用这些Docker命令:
docker network create --subnet=172.18.0.0/16 magentonet
docker run -d --name mysql -p 3306:3306 --net magentonet --ip 172.18.0.23 -e MYSQL_ROOT_PASSWORD=magepass -e MYSQL_DATABASE=mySchema mysql:5
docker build -t magento-bdd .
docker run --net magentonet --ip 172.18.0.22 -d magento-bdd
当命令docker build -t magento-bdd .
运行时,我在那里有这个RUN命令:
mysql --host=172.18.0.23 --user=root --password=magepass -e "create database magentodb; create user magentouser@localhost; grant all privileges on magentodb.* to 'magentouser'@'%' IDENTIFIED BY 'magentopass'; flush privileges;"
我现在面临的问题是命令以ERROR 2003 (HY000): Can't connect to MySQL server on '172.18.0.23' (110)
这有点意义,因为我还没有将容器连接到网络(这将在run
命令中发生。
如何从Dockerfile中将某些内容存储在上一个构建Docker的数据库中?
答案 0 :(得分:0)
docker build
在中间临时容器中运行每条指令,并且无法将该容器连接到Docker网络。因此,在构建新图像时,您无法使用mysql
容器。
相反,我首先考虑构建一个自定义数据库映像,使用一个启动FROM mysql
的Dockerfile并运行数据库创建脚本。然后,您就拥有了已经设置好的数据库映像,您可以运行该映像并连接到您的应用。