Tag: 等待

等待脚本覆盖默认的CMD并退出Docker容器

docker工人,compose.yaml: version: "3" services: mysql: image: mysql:5.7 environment: MYSQL_HOST: localhost MYSQL_DATABASE: mydb MYSQL_USER: mysql MYSQL_PASSWORD: 1234 MYSQL_ROOT_PASSWORD: root ports: – "3307:3306" expose: – 3307 volumes: – /var/lib/mysql – ./mysql/migrations:/docker-entrypoint-initdb.d restart: unless-stopped web: build: context: . dockerfile: web/Dockerfile volumes: – ./:/web ports: – "32768:3000" environment: NODE_ENV: development PORT: 3000 links: – mysql:mysql depends_on: – mysql expose: […]

我怎样才能让我的Docker撰写“等待它”脚本调用原始容器ENTRYPOINT或CMD?

根据控制Compose中的启动顺序 ,可以通过使用“ 等待它 ”脚本来控制Docker Compose启动容器的顺序。 脚本wait-for-it.sh既需要host:port参数,也需要脚本在端口可用时执行的命令。 文档build议Docker Compose使用entrypoint:选项来调用这个脚本。 但是,如果使用此选项,则容器将不再运行其默认entrypoint: ENTRYPOINT或CMD因为entrypoint:覆盖默认值。 如何能提供这个默认命令wait-for-it.sh以便脚本可以调用默认的ENTRYPOINT或CMD当它等待的条件满足? 在我的情况下,我已经实现了一个脚本wait-for-file.sh轮询等待文件存在: #!/bin/bash set -e waitFile="$1" shift cmd="$@" until test -e $waitFile do >&2 echo "Waiting for file [$waitFile]." sleep 1 done >&2 echo "Found file [$waitFile]." exec $cmd Docker Compose调用wait-for-file.sh作为派生自tomcat:8-jre8的稍微自定义容器的入口点tomcat:8-jre8 : platinum-oms: image: opes/platinum-oms ports: – "8080:8080" volumes_from: – liquibase links: – postgres:postgres – […]