gpt4 book ai didi

docker - 如何在 Docker 容器中启动和保留后台进程

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:57 24 4
gpt4 key购买 nike

我需要在 Docker 容器(实际上是 AppEngine 镜像)中启动后台作业(Google SQL 代理)。

经过一番努力后,我发现尝试启动后台作业要么在我与容器分离时丢弃作业(请参阅脚本中的 RUN 命令),要么容器停止正常工作(请参阅脚本中的 CMD 命令)

这是 Dockerfile:

FROM eu.gcr.io/google-appengine/ubuntu-php56

ADD ./run.sh /app
RUN chmod 777 /app/run.sh
#RUN nohup /app/run.sh & #This is lost the moment I finished creation of container
CMD nohup /app/run.sh & #This crash the container

这是 run.sh 文件:

#!/bin/bash
while true
do
echo "Beep"
sleep 2
done

这是构建 Docker 镜像的命令:

docker image build --tag red .

这是创建 docker 容器的命令:

docker run -d -p 8080:8080 --name red1 red

这是我如何连接到容器以检查里面有什么

docker exec -it red1 /bin/bash

再一次,我的目标是能够吃午饭并保持 run.sh 一直运行。

最佳答案

首先,appengine中不需要运行sql proxy,直接连接到你的数据库实例即可。

无论如何,容器的存在是因为每个容器都需要一个(而且只有一个)前台进程。将 CMD 更改为在前台运行任何其他进程即可完成工作:

CMD nohup /app/run.sh & sleep infinity

在这种情况下,前台进程处于 sleep 状态,您可以为运行您的应用的进程更改它。

关于docker - 如何在 Docker 容器中启动和保留后台进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52856059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com