在 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/bashbin/sh 在你的 docker-compose.ymlstartup-script.sh