我想使用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.yml
和startup-script.sh
中用bin/sh
替换/bin/bash