Поиск в Интернете и здесь, но не смог найти ответ, который решает мою проблему.
Моя проблема в том, что я хочу создать образ докера с некоторыми пользовательскими сценариями sql, скопированными из локальной файловой системы в образ докера.
Структура каталогов (несколько модулей проектов) составляет
my_sbt
+ my_app
- build.sbt ...
+ database
- build.sbt
+ scripts
- ... several sql scripts ...
database / build.sbt содержит dockerCommands
dockerCommands := Seq(
Cmd("FROM", "postgres:9.5"),
Cmd("EXPOSE", "5432"),
Cmd("COPY", (baseDirectory.value / "database" / "scripts" / "a.sql").toPath.toAbsolutePath.toString, "/docker-entrypoint-initdb.d/a.sql")
)
Изображение может быть успешно создано, если без COPY Cmd (т. Е. docker run -d --rm -p 5432:5432 <docker image>
запускает контейнер, и docker exec -it <container id> bash
может выполнить bash для контейнера, и проверка выполнения выполняется на ps -ef
в bash контейнера). Однако добавление оператора COPY в dockerCommands приводит к сбою процесса сборки sbt docker:publishLocal
с ошибкой java.lang.RuntimeException: ненулевое значение выхода: 1
java.lang.RuntimeException: Nonzero exit value: 1
at com.typesafe.sbt.packager.docker.DockerPlugin$.publishLocalDocker(DockerPlugin.scala:335)
at com.typesafe.sbt.packager.docker.DockerPlugin$$anonfun$projectSettings$22.apply(DockerPlugin.scala:119)
at com.typesafe.sbt.packager.docker.DockerPlugin$$anonfun$projectSettings$22.apply(DockerPlugin.scala:117)
...
Запуск sbt с помощью -d sbt -d docker:publishLocal
не помогает, так как он все еще выдает Ненулевое значение выхода: 1 , что не помогает вообще.
Как правильно обращаться к локальным сценариям и копировать их в образ докера?
Спасибо
РЕДАКТИРОВАТЬ:
Просто обратите внимание, что нативный упаковщик sbt, похоже, лишает путь к ведущему корневому каталогу, то есть '/'. Есть причина, почему это так? И как предотвратить ведение / срывание?
[info] Step 3/3 : COPY /path/to/database/scripts/users.sql /docker-entrypoint-initdb.d/users.sql
[error] lstat path/to/database/scripts/users.sql: no such file or directory