Я хотел бы запустить контейнер докеров оракула, используя docker-compose. В моем файле docker-compose.yml я монтирую том докера как
volumes: - /host/folder:/opt/oracle/scripts/setup
На самом деле /host/folder имеет несколько подкаталогов, содержащих некоторые установочные сценарии, которые я хочу, чтобы они выполнялись, когда я делаю docker-compose. Будет ли 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
Да, если сценарий написан для этого. Если вам нужна помощь в написании скриптов, лучше всего подойдет unix.SE. Это вопрос сценария оболочки, а не вопрос докера.