我需要在我的应用程序中开发docker,我使用maven-docker-plugin创建docker镜像。之后我运行sh script whit就在这里。
docker run --name app-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=app -d mysql
docker run --name app -p --link app-mysql:localhost -d app
docker run --name app-nginx -d -p 80:80 --link app:app nginx
docker exec app-nginx rm -rf /etc/nginx/conf.d/default.conf
docker cp app:/default.conf default.conf
docker cp default.conf app-nginx:/etc/nginx/conf.d/default.conf
docker restart app-nginx
但我有一个问题。第一个mysql容器运行良好。其次,app容器运行良好。但是nginx容器抛出错误:
docker: Error response from daemon: Cannot link to a non running container: /app AS /app-nginx/app.
如果我使用命令
运行此脚本sleep 120
它正常设置的容器之间,据我所知nginx容器在app容器完成之前运行。有没有办法在没有sleep命令的情况下运行容器,因为它是硬编码的。我如何判断容器是否成功完成。你能帮我解决一下吗?
答案 0 :(得分:0)
我更喜欢使用像docker-compose这样的东西。但您仍然可以使用代码进行管理。关键不是启动容器,而是首先创建它然后启动它
docker run --name app-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=app -d mysql
docker run --name app -p --link app-mysql:localhost -d app
docker create --name app-nginx -d -p 80:80 --link app:app nginx
docker cp app:/default.conf app-nginx:etc/nginx/conf.d/default.conf
docker start app-nginx
此外,--link
已弃用,不应使用。您应该使用docker network create
创建网络,然后使用--net
将该网络分配给您的容器。 docker-compose
会自动为您做很多这样的事情,这就是为什么使用它更有意义