docker - 如何使用 docker-compose.yml 在容器内自动启动应用程序
问题描述
我经常不得不使用“docker-compose up”命令重新创建我的容器。我遇到的问题是每次重新创建容器后,我都必须去容器内的终端运行像“sudo service xx start”这样的命令来启动应用程序。我是否可以在我的 docker-compose 文件中包含该 sudo 命令?这样我就可以避免这个额外的步骤。
我尝试在 docker-compose 中添加以下行但不起作用“命令:sudo service..”
任何帮助表示赞赏。谢谢你。
解决方案
Docker 需要一个进程来保持运行,否则容器将退出。因此sudo service xx start
,在后台启动进程的 a 将不起作用。一种可能的解决方案是附加另一个命令,例如tail
or 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
命令,容器不会退出。
推荐阅读
- python - scipy.integrate solve_ivp 理解例子
- python - Python:如何将 android.show_keyboard 用于我的 android 应用程序?
- c# - 如何更改 goto 语句以改进代码?
- reactjs - 使用 console.log 时 React Hook 不返回任何内容
- swift - 如何正确使用 .dropLast()
- android - 如何防止 SharedPreferences 加载损坏的数据
- javascript - Js 按钮单击替代
- ios - 联系
: 无法在没有连接的情况下确定回退状态 - vue.js - 如何在设置中调用 recaptcha 实例?
- python - Cisco Packet Tracer 中的 Python 套接字编程