Bash docker compose命令wait for看起来没有保持服务的启动

Bash docker compose命令wait for看起来没有保持服务的启动,bash,docker,docker-compose,Bash,Docker,Docker Compose,我遵循了这个示例,并对脚本进行了wait_(已测试并运行): 现在在我的docker compose文件中,我有如下内容: version: '3.3' services: app1: image: x container_name: "xx" restart: always ports: - 222 networks: - x_network app2: image: "y&quo

我遵循了这个示例,并对脚本进行了wait_(已测试并运行):

现在在我的docker compose文件中,我有如下内容:

version: '3.3'

services:
  app1:
    image: x
    container_name: "xx"
    restart: always
    ports:
      - 222
    networks:
      - x_network

  app2:
    image: "y"
    container_name: "y2"
    depends_on:
      - app1
    command: ["./wait-for-it.sh", "xx"]
    ports:
      - 8444
   
    links:
      - app1
    networks:
      - x_network

networks:
  x_network:
    driver: bridge

但是当我启动时,我没有看到app2正在等待,我可以查看一些日志来验证脚本是否正常工作吗?

您的脚本正在使用
docker
命令,但脚本正在作为app2的命令/入口点运行。我希望您的app2容器在运行
docker容器ls
时失败。尝试在脚本顶部添加
set-x
set-e
,然后重试。容器崩溃后,您应该会看到一些有用的输出(
docker logs y2
)。它正在检查app1是否准备就绪,而不是自己检查。是的,这是您的意图,但只有主机可以使用
docker
命令来查询容器状态。您的脚本正在app2容器中运行,因此无法访问
docker
命令。
version: '3.3'

services:
  app1:
    image: x
    container_name: "xx"
    restart: always
    ports:
      - 222
    networks:
      - x_network

  app2:
    image: "y"
    container_name: "y2"
    depends_on:
      - app1
    command: ["./wait-for-it.sh", "xx"]
    ports:
      - 8444
   
    links:
      - app1
    networks:
      - x_network

networks:
  x_network:
    driver: bridge