2017-08-03 118 views
0

我需要在我的应用程序中开发码头工人,我用maven-docker-plugin创建码头图像。之后,我运行sh脚本白衣在这里。码头集装箱运行异步

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容器运行良好。其次,应用容器运行良好。但是nginx的容器抛出错误:

docker: Error response from daemon: Cannot link to a non running container: /app AS /app-nginx/app. 

如果我运行这个纸条带命令

sleep 120 

它通常设置,据我所知以前的应用程序瓶口nginx的容器中运行的容器之间。有没有任何方法可以在没有睡眠命令的情况下运行容器,因为它是硬编码的。我如何判断容器是否成功完成。你能帮我解决问题吗?

回答

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自动为你做了很多这些事情,这就是为什么它使用更有意义,而不是