我经常不得不使用“ docker-compose up”命令来重新创建容器。我遇到的问题是每次重新创建容器后,我都必须去容器内的终端以运行“ sudo service xx start”之类的命令来启动应用程序。是否可以在我的docker-compose文件中包含该sudo命令?这样我就可以避免执行此额外步骤。
我尝试在docker-compose中添加以下行,但无法正常运行“命令:sudo服务..”
感谢您的帮助。谢谢。
答案 0 :(得分:3)
Docker需要一个进程来保持运行,否则容器将退出。因此,在后台启动进程的sudo service xx start
无法正常工作。
一种可能的解决方案是附加另一个命令,例如tail
或bash
:
command: service xx start && tail -f /dev/null
已编辑,以使用cron
添加具体示例。
Dockerfile
:
FROM ubuntu:latest
RUN apt-get update && apt-get -y install cron
# Create the log file to run run tail
RUN touch /var/log/cron.log
# set the CMD and ENTRYPOINT in docker-compose
构建图像
docker build -t my-test .
在entrypoint
中添加command
和docker-compose.yml
:
version: "3.4"
services:
service:
image: my-test
entrypoint: /bin/bash
command: -c "service cron start && tail -f /var/log/cron.log"
通过添加tail
命令,容器不会退出。