相关疑难解决方法(0)

Docker Compose在启动Y之前等待容器X.

我使用的RabbitMQ并从一个简单的Python样品在这里 一起泊坞窗-撰写.我的问题是我需要等待rabbitmq完全启动.从我到目前为止搜索到的,我不知道如何等待容器x(在我的情况下是工人)直到y(rabbitmq)开始.

我找到了这个博文,他检查其他主机是否在线.我还发现了这个docker命令:

等待

用法:docker等CONTAINER [CONTAINER ...]

阻止,直到容器停止,然后打印其退出代码.

等待容器停止可能不是我想要的但如果是,是否可以在docker-compose.yml中使用该命令?到目前为止,我的解决方案是等待几秒钟并检查端口,但这是实现此目的的方法吗?如果我不等,我会收到错误.

泊坞窗,compose.yml

worker:
    build: myapp/.
    volumes:
    - myapp/.:/usr/src/app:ro

    links:
    - rabbitmq
rabbitmq:
    image: rabbitmq:3-management
Run Code Online (Sandbox Code Playgroud)

python hello sample(rabbit.py):

import pika
import time

import socket

pingcounter = 0
isreachable = False
while isreachable is False and pingcounter < 5:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        s.connect(('rabbitmq', 5672))
        isreachable = True
    except socket.error as e:
        time.sleep(2)
        pingcounter += 1
    s.close()

if isreachable:
    connection = pika.BlockingConnection(pika.ConnectionParameters(
            host="rabbitmq"))
    channel = connection.channel()

    channel.queue_declare(queue='hello')

    channel.basic_publish(exchange='', …
Run Code Online (Sandbox Code Playgroud)

docker-compose

271
推荐指数
13
解决办法
18万
查看次数

在docker_compose.yml中链接和depends_on之间的差异

根据Docker Compose的撰写文件文档:

  • depends_on - 服务之间的快速依赖性.
  • links- 链接到另一个服务中的容器,并以与depends_on相同的方式表达服务之间的依赖关系.

我不明白链接到其他容器的目的,所以两个选项之间的差异对我来说似乎仍然很难.

如果有一个例子会更容易,但我找不到任何例子.

我注意到,当我将容器B与容器A链接时,容器B将在容器A的shell内"ping".

ping B在容器A里跑了bash,得到了这样的结果(仅供参考,来自互联网的图片)

在此输入图像描述

docker dockerfile docker-compose

248
推荐指数
4
解决办法
14万
查看次数

我如何等待docker容器启动并运行?

在容器内运行服务时,让我们说命令是mongodb

docker run -d myimage
Run Code Online (Sandbox Code Playgroud)

将立即退出,并返回容器ID.在我的CI脚本中,我在运行mongo容器后立即运行客户端来测试mongodb连接.问题是:客户端无法连接,因为服务尚未启动.除了sleep 10在我的脚本中添加一个大的,我没有看到任何等待容器启动和运行的选项.

Docker有一个wait在这种情况下不起作用的命令,因为容器不存在.这是码头工人的限制吗?谢谢

mongodb docker

74
推荐指数
8
解决办法
6万
查看次数

Docker Compose Wait til依赖项容器在启动前已完全启动

我正在使用docker-compose使用docker服务,并且我有一个依赖于花药的服务。

我使用了depends_on密钥,但是具有依赖项的服务在依赖服务完全启动之前启动。

version: '3'

services:
  KeyManager:
    image: cjrutherford/keymanager
    deploy:
      replicas: 1
    ports:
      - '3220:3220'
    networks:
      - privnet
  YellowDiamond:
    image: cjrutherford/server
    depends_on:
      - KeyManager
    deploy:
      replicas: 1
    ports:
      - '3000:3000'
    networks:
      - privnet
      - web
networks:
  privnet:
    internal: true
  web:
Run Code Online (Sandbox Code Playgroud)

这两个都是节点应用程序,要求密钥管理器在服务器启动之前运行以接受请求。我可以添加超时吗?或在应用程序中发送触发器?从经理那里获取钥匙还为时过早。

docker docker-compose

5
推荐指数
2
解决办法
4280
查看次数

depends_on不等待docker-compose 1.22.0中的其他服务

我当前的docker-compose.yml-

# This docker-compose file uses '.env' file present in the current directory, 
# for database credentials. If you want to change the credentials please 
# change the data in '.env'.
# '.env' file might be hidden as dot files are hidden please unhide to see it.
# Know more about '.env' file: https://docs.docker.com/compose/env-file/

version: '3'

services: 
  postgresdb:
    image: postgres:9.5
    environment: 
      POSTGRES_USER: ${ENV_POSTGRES_USER}
      POSTGRES_PASSWORD: ${ENV_POSTGRES_PASSWORD}
      POSTGRES_DB: ${ENV_POSTGRES_DB}
    volumes: 
      - "../app/volumes/postgres/data:/var/lib/postgresql/data"

  # This is python service. It uses python 3.6 as …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

1
推荐指数
2
解决办法
2581
查看次数

标签 统计

docker ×4

docker-compose ×4

dockerfile ×1

mongodb ×1