Выполнить скрипт внутри контейнера docker, папка которого отличается от WORKDIR

#docker

#docker

Вопрос:

Я нахожусь внутри своего контейнера docker: это мой рабочий каталог

 root@19b84a014662:/usr/src/ghost#
  

У меня есть скрипт в:

 root@19b84a014662:/
  

Я могу записать / и выполнить скрипт. Но мне нужно выполнить скрипт из моего файла docker-compose. Я попытался

 ./test.sh
  

Но на самом деле это означает /usr/src/ghost/ , что он ищет скрипт вместо /
Как я могу выполнить скрипт в / моем контейнере?

Пример: я подключаюсь к своему контейнеру по ssh:

 root@19b84a014662:/usr/src/ghost# ls
Gruntfile.js  LICENSE  PRIVACY.md  README.md  config.example.js  config.js  content  core  index.js  node_modules  npm-shrinkwrap.json  package.json
  

У меня есть скрипт в корне моего контейнера. Я хочу выполнить его с:

 ./test.sh
  

Чем он показывает мне только папки / скрипты, которые находятся в /usr/src/ghost , а не в /

 root@19b84a014662:/usr/src/ghost# ./
content/      core/         node_modules/
  

Комментарии:

1. /test.sh или RUN /test.sh в Dockerfile

Ответ №1:

Просто замените свой ./test.sh на

 /test.sh
  

Потому ./ что означает, что вы начинаете с текущего каталога (который /usr/src/ghost/ в данном случае является рабочим каталогом). Несмотря на это / , вы начинаете с корневого каталога, и это то, что вы хотите сделать.

В качестве альтернативы вы можете переключиться на корневой каталог и выполнить свой скрипт одной командой, используя amp;amp; конкатенатор ниже. Но я порекомендую выше.

 cd / amp;amp; ./test.sh