Я пытаюсь докеризировать старую сборку sbt, которой нужен доступ к частному репозиторию Nexus. Ранее я использовал локальный файл учетных данных, указанный в build.sbt, но в настоящее время он мне не подходит, поскольку я хочу загрузить все из сборки Dockerfile. Я скорее не должен выводить материал в файл и затем копировать его в мой сборочный контейнер докера, а просто передать его как ARG докера.
Под
https://www.scala -sbt.org / 1,0 / Docs / Publishing.html
Я прочитал, я могу передать это так:
credentials += Credentials("Some Nexus Repository Manager",
"my.artifact.repo.net", "admin", "admin123")
Поэтому я решил, что могу сделать что-то вроде:
ARG REPO_USER
ARG REPO_PWD
RUN sbt ";credentials += Credentials(\"Some Nexus Repository Manager\", \"repo.host.com\", ${REPO_USER}, ${REPO_PWD}) ;package"
, а затем запустить
docker build . --build-arg REPO_USER=foobar --build-arg REPO_PWD=*****
в моем Dockerfile, но это не сработало. Я все еще получаю:
Невозможно найти учетные данные для [Sonatype Nexus Repository Manager @ repo.host.com]
Есть ли хороший способ передачи учетных данных репо в sbt из cli?
Обновление:
Я попробовал файловый подход, но это не решило проблему, поэтому я думаю, что могу ошибиться в том, что здесь на самом деле не так.
RUN echo "realm=Sonatype Nexus Repository Manager" >> .credentials && \
echo "host=repo.host.se" >> .credentials && \
echo "user=$REPO_USER" >> .credentials && \
echo "password=$REPO_PWD" >> .credentials && \
export SBT_CREDENTIALS=.credentials && \
sbt package
Обновление 2
Я думаю, что это больше не вопрос Docker, так как я отлаживал его в контейнере Docker, sbt просто не собирал мои кредиты в любом случае, как я прошел его в соответствии с документами sbt.
Я отвечу на свой вопрос.