首页 > 解决方案 > 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 图像中完成了这个,它工作正常。

标签: dockerapachedocker-composedockerfile

解决方案


推荐阅读