首页 > 解决方案 > 如何使用 docker-compose.yml 在容器内自动启动应用程序

问题描述

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

我尝试在 docker-compose 中添加以下行但不起作用“命令:sudo service..”

任何帮助表示赞赏。谢谢你。

标签: dockerdocker-compose

解决方案


Docker 需要一个进程来保持运行,否则容器将退出。因此sudo service xx start,在后台启动进程的 a 将不起作用。一种可能的解决方案是附加另一个命令,例如tailor 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命令,容器不会退出。


推荐阅读