Docker php:7.2-apache-stretch 在我运行启动脚本时重新启动

时间:2021-06-07 12:45:00

标签: docker apache docker-compose dockerfile

我有一个与此类似的 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 base image is 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

startup.sh

python /usr/local/bin/wait.py

但是当我的 web 容器启动时,它总是会重新启动。 wait.py 的目的是等到 db 完全初始化。

我怎样才能做到这一点? 我已经在 postgres/tomcat docker 图像中完成了这项工作,并且效果很好。

0 个答案:

没有答案