首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker容器异步运行

Docker容器异步运行
EN

Stack Overflow用户
提问于 2017-08-03 22:11:35
回答 1查看 1.9K关注 0票数 0

我需要在我的应用程序中开发docker,我用maven- docker -plugin创建docker镜像。在此之后,我在这里运行sh script。

代码语言:javascript
复制
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容器抛出错误:

代码语言:javascript
复制
docker: Error response from daemon: Cannot link to a non running container: /app AS /app-nginx/app.

如果我使用以下命令运行此脚本

代码语言:javascript
复制
sleep 120 

它在容器之间正常设置,据我所知,nginx容器在app容器完成之前运行。有没有办法不使用睡眠命令来运行容器,因为它是硬编码的。如何判断容器是否成功完成。你能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-04 01:11:54

我更喜欢使用像docker-compose这样的东西。但是您仍然可以使用您的代码进行管理。关键不是启动容器,而是先创建它,然后再启动它

代码语言:javascript
复制
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会自动为您做很多这些事情,这就是为什么使用它会更有意义

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45486727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档