【问题标题】:Docker containers run asyncDocker 容器异步运行
【发布时间】:2017-08-03 14:11:35
【问题描述】:

我需要在我的应用程序中开发 docker,我使用 maven-docker-plugin 创建 docker 映像。之后我运行 sh script whit is here.

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 容器在应用容器完成之前运行。有什么方法可以在没有 sleep 命令的情况下运行容器,因为它是硬编码的。我怎么知道容器是否成功完成。你能帮我解决一下吗?

【问题讨论】:

    标签: mysql maven docker nginx


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-04
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 2015-06-18
      • 2014-07-22
      • 1970-01-01
      相关资源
      最近更新 更多