Docker compose can';不得进入其他集装箱的港口
我有两个容器与docker compose一起运行。其中一个容器正在执行shell脚本,该脚本应检查另一个容器是否已启动并正在端口9990上运行 即使容器正在启动,shell脚本也不会响应任何内容Docker compose can';不得进入其他集装箱的港口,docker,shell,networking,docker-compose,Docker,Shell,Networking,Docker Compose,我有两个容器与docker compose一起运行。其中一个容器正在执行shell脚本,该脚本应检查另一个容器是否已启动并正在端口9990上运行 即使容器正在启动,shell脚本也不会响应任何内容 keycloak: image: jboss/keycloak:latest volumes: - ./imports/cache_reload/disable-theme-cache.cli:/opt/jboss/startup-scripts/dis
keycloak:
image: jboss/keycloak:latest
volumes:
- ./imports/cache_reload/disable-theme-cache.cli:/opt/jboss/startup-scripts/disable-theme-cache.cli
- ./imports/themes/custom/:/opt/jboss/keycloak/themes/custom-theme/
- ./imports/realm/realm-export.json:/opt/jboss/realms/custom-import.json
environment:
DB_VENDOR: MYSQL
DB_ADDR: mysql
DB_DATABASE: keycloak
DB_USER: keycloak
DB_PASSWORD: password
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: Pa55w0rd
ports:
- 8080:8080
depends_on:
- mysql
keycloak_installer:
image: solr:6.6-alpine
volumes:
- ./imports/scripts/import-realm.sh:/docker-entrypoint-initdb.d/init.sh
depends_on:
- keycloak
shell脚本如下所示:
echo "MOIN LEUDE TRYMACS HIER!"
while ! nc -z localhost 9990; do
sleep 1
echo "Waiting for keycloak server startup 9990..."
echo "$(nc -z localhost 9990)"
done
第一个回音被打印出来,但是其他的什么都不打印
容器KeyClope正在端口9990上运行
请帮助,谢谢您必须在docker compose中理解
要解决您的问题,您需要:
端口:
- 8080:8080
网络:
-密钥掩蔽网络
在第二个容器(名为keydove_installer)上(必须公开要在第一个容器中请求的端口):
取决于:
-钥匙斗篷
网络:
-密钥掩蔽网络
nc-z钥匙斗篷安装程序9990
从“安装程序”容器的角度来看,localhost
是“安装程序”容器。有关可连接到其他容器的主机名,请参见;您应该能够使用Compose服务名keydape
作为主机名。我已经试过了!nc-z键斗篷9990;还是一样。有什么想法吗?谢谢!您不需要执行步骤1中的任何部分。Compose创建一个默认值
网络,如果不执行任何操作,则将容器附加到该网络;“expose”作为动词在现代Docker中几乎没有任何意义;容器间连接完全忽略端口:
。感谢您的反馈。我已经编辑了我的答案,我想明确定义网络更容易理解。对于端口,您是对的,只是为了测试,但这不是必需的,我已经删除了它。