当前位置: 首页 > 知识库问答 >
问题:

docker-compose,在容器启动后运行脚本?

澹台俊达
2023-03-14

我有一个服务,我正在通过Rancher通过Docker-Compose提出。我遇到的问题是需要在容器部署后设置密码。

共有1个答案

冷俊健
2023-03-14

诀窍是在调用原始命令之前覆盖compose命令以执行所需的任何init操作。

  1. 在映像中添加一个脚本,该脚本将执行您想要的初始化工作,如设置密码、更改内部配置文件等。我们将其称为init.sh。您可以将其添加到您的图像中。

DockerFile:

FROM: sourceimage:tag
COPY init.sh /usr/local/bin/
ENTRYPOINT []

docker-compose.yml:

services:
  myservice:
    image: something:tag
    ...
    command: sh -c "/usr/local/bin/init.sh && exec myexecutable"

在调用main命令之前使用exec是很重要的。这将把命令安装为第一个进程(PID1),使它接收诸如STOP、KILL(键盘上的Ctrl-C)或HUP之类的信号。

 类似资料:
  • 问题内容: 我正在使用Search Guard插件来保护由多个节点组成的elasticsearch集群。这是我的Dockerfile: 初始化SearchGuard(创建内部用户并分配角色)。容器启动后,我需要运行脚本。这是问题所在:除非运行Elasticsearch,否则脚本将不会初始化任何安全性索引。 脚本的内容是: 现在,我只是在容器启动后手动运行脚本,但是由于我是在Kubernetes上运

  • 问题内容: 我准备了一个docker-compose文件来部署带有数据库的容器: 没关系。但是现在我需要创建一个数据库并建立其结构。我需要执行一些sql命令。为了检查我是否能够做到这一点,我将其添加到服务中: 但是我遇到以下错误: 我感觉命令是在Sql Server实例启动之前执行的。我该如何解决?Sql Server启动后如何执行一些sql? 问题答案: 问题是在容器中仅执行一个命令。当您在其中

  • 问题内容: 我想使用docker-compose启动服务并保持容器运行,以便我可以通过“ docker inspect”获取其IP地址。但是,容器始终在启动后立即退出。 我试图在docker-compose.yml中添加“ command:[“ sleep”,“ 60”]“和其他内容,但是每当我添加带有” command:…“的行时,我都无法调用” docker-compose up“因为我将收到

  • 我想用docker-compose启动一个服务,并保持容器运行,这样我就可以通过'dockerinspect'获得它的IP地址。但是,容器总是在启动后立即退出。 我试图在docker-compose.yml中添加“command:[”sleep“,”60“]”和其他内容,但每当我添加带有“command:...”的行时。我不能调用“docker-compose up”,因为我将得到消息“无法启动容

  • 我正在用docker容器设置本地开发环境。码头工人在作曲。yml如下所示: 它开始没有错误。docker列出了3个运行中的容器 但是,当我尝试从另一个容器链接到那些正在运行的容器时 我得到错误 我也尝试过 同样的错误。 那么如何链接到docker-compose启动的正在运行的容器呢?

  • 我试图在docker容器中使用docker compose来运行shell脚本。我正在使用Dockerfile构建容器环境并安装所有依赖项。然后我将所有项目文件复制到容器中。据我所知,这很有效。(我对docker还是相当陌生的,docker撰写) 我的Dockerfile: 我目前正在尝试的是: docker编写文件: 这导致容器无法启动,从日志中我得到以下结果: 有关更多参考和信息,请参阅我的e