docker - Docker php:7.2-apache-stretch 在我运行启动脚本时重新启动
问题描述
我有一个与此类似的 docker-compose.yml
version: "3"
db:
networks:
selenoid: null
image: my-db:latest
restart: always
web:
networks:
selenoid: null
depends_on:
- db
image: my-web:latest
restart: always
environment:
DB_HOST: db
my-web:latest 基础映像FROM php:7.2-apache-stretch
在 Dockerfile 中我复制了 2 个文件并在 my-web:latest 中运行它
COPY wait.py /usr/local/bin/
COPY startup.sh /usr/local/bin/
ENTRYPOINT [ "sh","/usr/local/bin/startup.sh" ]
等待.py
import socket
import time
import os
port = int(3306) # 3306
db_host=os.environ['DB_HOST']
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
i=0
while i<300:
try:
print("trying to connect to database host at "+db_host+". Try : "+str(i))
s.connect((db_host, port))
s.close()
break
except socket.error as ex:
print("Sleeping for 1 second. Try : "+str(i))
time.sleep(1)
i+=1
启动.sh
python /usr/local/bin/wait.py
但是当我的web
容器启动时,它总是会重新启动。wait.py 的目的是等到db
完全初始化。
我怎样才能做到这一点?我已经在 postgres/tomcat docker 图像中完成了这个,它工作正常。
解决方案
推荐阅读
- javascript - javascript代码无法在android中运行最新的chrome
- gremlin - 列表属性的 Tinkerpop 值作为字符串而不是列表返回
- arrays - 如何将动态分配的数组传递给 Excel VBA 中的函数
- android - 如果 kotlin 协程作业需要相当长的时间才能完成,如何有效地显示加载对话框?
- vuejs2 - 使用 VUEJS 循环遍历嵌套数组
- android - 我在获取正确的文件 URI 以将徽标打印到迷你打印机时遇到问题
- angular - 比较两个物体的角度
- .net - WPF HierarchicalDataTemplate:从 ItemTemplate 绑定回父级
- python - 在 DEAP 中实施清算程序
- javascript - 如何在常规异常中使用带双引号的变量?