在 docker 容器启动时是否可能 运行 子目录的多个设置脚本
Is it possible run multiple setup scripts of subdirectories on docker container startup
我想 运行 使用 docker-compose 的 oracle docker 容器。在我的 docker-compose.yml 文件中,我将 docker 卷挂载为
volumes: - /host/folder:/opt/oracle/scripts/setup
实际上 /host/folder 有多个子目录,其中包含一些设置脚本,我希望它们在我 docker-compose up 时执行。容器中的 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
,那么你可以替换/bin/bash
与 bin/sh
在你的 docker-compose.yml
和 startup-script.sh
我想 运行 使用 docker-compose 的 oracle docker 容器。在我的 docker-compose.yml 文件中,我将 docker 卷挂载为
volumes: - /host/folder:/opt/oracle/scripts/setup
实际上 /host/folder 有多个子目录,其中包含一些设置脚本,我希望它们在我 docker-compose up 时执行。容器中的 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
,那么你可以替换/bin/bash
与 bin/sh
在你的 docker-compose.yml
和 startup-script.sh