如何使用docker-compose.yml在容器内自动启动应用

时间:2019-08-01 04:53:17

标签: docker docker-compose

我经常不得不使用“ docker-compose up”命令来重新创建容器。我遇到的问题是每次重新创建容器后,我都必须去容器内的终端以运行“ sudo service xx start”之类的命令来启动应用程序。是否可以在我的docker-compose文件中包含该sudo命令?这样我就可以避免执行此额外步骤。

我尝试在docker-compose中添加以下行,但无法正常运行“命令:sudo服务..”

感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:3)

Docker需要一个进程来保持运行,否则容器将退出。因此,在后台启动进程的sudo service xx start无法正常工作。 一种可能的解决方案是附加另一个命令,例如tailbash

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中添加commanddocker-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命令,容器不会退出。