是否可以在docker容器启动时运行多个子目录的设置脚本



我想使用docker compose运行一个oracle docker容器。在我的docker-compose.yml文件中,我将docker卷装载为volumes: - /host/folder:/opt/oracle/scripts/setup

实际上,/host/文件夹有多个子目录,其中包含一些安装脚本,我希望它们在我进行docker编写时执行。容器中的runScripts.sh也会考虑子目录吗?

否。docker-compose不考虑您的子目录。

您可以根据需要运行特定的bash脚本,在该脚本中可以执行特定的脚本。

您的docker-compose.yml将如下所示:

version: "3"
services:
setup:
image: ubuntu:latest
volumes:
- ./startup-script.sh:/root/startup-script.sh
- /host/folder:/opt/oracle/scripts/setup
entrypoint: "/root/startup-script.sh"
stdin_open: true
tty: true

startup-script.sh将如下所示:

#!/bin/bash
bash /directory1/script.sh
bash /directory2/script.sh
bash /directory3/script.sh
bash /directory4/script.sh
/bin/bash
exec "$@"

因此,当docker容器启动时,startup-script.sh将被执行,然后它将执行所有其他所需的脚本。

注意:如果您的容器不是ubuntu映像,并且支持sh而不是bash,那么您可以在docker-compose.ymlstartup-script.sh中用bin/sh替换/bin/bash

相关内容

  • 没有找到相关文章

最新更新