相关疑难解决方法(0)

如何在 Docker Compose 中等待 MSSQL?

我有一个依赖于 MSSQL的服务(一个 ASP.NET Core Web 应用程序)。这些服务是使用 Docker compose 编排的,我希望 docker compose在运行我的服务之前首先启动数据库并等待它准备就绪。为此,我将其定义docker-compose.yml为:

version: '3.7'

services:

  sql.data:
    container_name: db_service
    image: microsoft/mssql-server-linux:2017-latest
    healthcheck:
      test: ["CMD", "/opt/mssql-tools/bin/sqlcmd", "-S", "http://localhost:1433", "-U", "sa", "-P", "Pass_word", "-Q", "SELECT 1", "||", "exit 1"]

  my_service:
    container_name: my_service_container
    image: ${DOCKER_REGISTRY-}my_service
    build:
      context: .
      dockerfile: MyService/Dockerfile
    depends_on:
      - sql.data
Run Code Online (Sandbox Code Playgroud)

通过这种健康检查,Docker compose 不会等待数据库服务准备就绪my_service,而是立即启动,并且如预期的那样,my_service无法连接到数据库。部分日志是:

Recreating db_service ... done
Recreating my_service_container ... done
Attaching to db_service, my_service_container 
my_service_container | info: ...Context[0]
my_service_container |       Migrating …
Run Code Online (Sandbox Code Playgroud)

c# sql-server docker docker-compose asp.net-core

20
推荐指数
5
解决办法
1万
查看次数

Docker Compose:depends_on 条件 -> 无效类型,应该是一个数组

我有以下撰写文件:

version: "3"

services:

  zookeeper:
    image: docker-dev.art.intern/wurstmeister/zookeeper:latest
    ports:
      - 2181:2181

  kafka:
    image: docker-dev.art.intern/wurstmeister/kafka:latest
    ports:
      - 9092:9092
    environment:
      - KAFKA_LISTENERS=PLAINTEXT://:9092
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
      - KAFKA_ADVERTISED_HOST_NAME=kafka
      - KAFKA_ADVERTISED_PORT=9092
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
    depends_on:
      - zookeeper

  app:
    build:
      context: ./
      dockerfile: app/Dockerfile
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:4020/actuator/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    depends_on:
      - kafka
      - zookeeper

  app-test:
    build:
      context: ./
      dockerfile: test/Dockerfile
    depends_on:
      app:
        condition: service_healthy
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在为应用程序实施运行状况检查,并且我使用service_healthy条件。但这会导致错误:

The Compose file '.\docker-compose.yml' is invalid because:
services.app-test.depends_on contains an invalid type, it should …
Run Code Online (Sandbox Code Playgroud)

yaml docker docker-compose

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

Docker Compose错误-“ wait-for-it.sh:没有这样的文件或目录”

我有以下docker compose文件,并且尝试使用“ wait-for-it.sh”,以便在kafka代理可用后启动控制中心

control-center: image: confluentinc/cp-enterprise-control-center hostname: control-center restart: always depends_on: - zookeeper - kafka - schema_registry - connect **command: ["./wait-for-it.sh", "kafka:9092"]**

当我执行docker-compose up时出现以下错误。

无法启动服务控制中心:OCI运行时创建失败:container_linux.go:296:启动容器进程导致“ exec:\”。/wait-for-it.sh \”:stat ./wait-for-it.sh:没有此类文件或目录”:未知

我在Windows 10上,将docker用于Windows和Powershell。

docker docker-compose

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

标签 统计

docker ×3

docker-compose ×3

asp.net-core ×1

c# ×1

sql-server ×1

yaml ×1