我有一个项目使用正式的nginx码头容器从码头集线器,启动通过码头组成。我在Docker中为我的每个容器配置了健康检查,最近对这个nginx容器的健康检查表现得很奇怪;在使用docker-compose up -d启动时,我的所有容器都启动并开始运行健康检查,但是nginx容器看起来从未运行过健康检查。如果我将docker exec放入容器中,我可以手动运行脚本,如果重新启动容器,则健康检查将正常运行。
来自docker ps的示例输出
CONTAINER ID IMAGE COMMAND CREATED
如果我在docker-compose.yaml文件中指定了一个服务,并且该服务(容器)退出,那么健康检查是否会随之进行?
我猜想答案是no,而docker compose足够聪明,可以继续检查它,但是我似乎找不到任何在线文档来回答这个特定的问题。
示例服务配置:
app: # this service exits
image: my_cool_app:v1.2.3
healthcheck: # does this keep running at the given interval?
test: ["CMD", "curl", "-f
在继续之前,我使用下面的bash代码来确保docker容器是正常运行的。然而,我当前的健康检查间隔设置为30秒,因此,这个循环几乎总是等待30秒,即使容器实际上在1秒后就准备好了。我不想降低间隔,因为运行状况检查使用curl,并且我不想给我的access_log发送垃圾邮件。理想情况下,我希望在5秒后执行第一次健康检查,而不是30秒后,然后在两次检查之间间隔30秒。 maxcounter=60
counter=1
# Wait until the container is launched and healthy before continuing
until [ "$(docker
docker不会重新启动我的容器,即使它列出了退出代码2是docker-compose ps。
Name Command State Ports
-----------------------------------------------------------------------------
app_autoheal_1 /docker-entrypoint autoheal Up (healthy)
我已经创建了一个AWS EC2实例,并在其中运行了一个jenkins容器,下面是详细信息:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
xxxxxxxxx docker.io/jenkins/jenkins 47 hours ago Up 47 hours ago 0.0.0.0:8080->8080/tcp, 0.0.0.0:5000
我正在尝试将存储在docker Registry中的spring boot Docker镜像部署到Cloud Run。
然而,当我部署镜像时,我得到了这个错误;
Cloud Run error: Container failed to start. Failed to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information.
我知道这可能是由端口和地址设置引起的,所以我修复了引用的这些部分,尽
我试着用docker群运行一个应用程序。该应用程序是设计成完全本地运行在一台计算机上使用的码头群。
如果我将SSH放入服务器并运行一个坞堆栈,那么部署一切都可以,如这里所示,运行docker service ls
当此部署正常运行时,服务通常按以下顺序运行:
登记处(私人登记处)
Main ( Nginx服务)和Postgres
所有其他服务按随机顺序排列(所有节点应用程序)
我遇到的问题是重新启动。当我重新启动服务器时,我一直存在服务失败的问题,结果如下:
我发现了一些可能有帮助的错误。
在Postgres:docker service logs AP