sbt-native-packager로 docker 이미지의 기반을 amazoncorretto로 만들고 싶습니다.

build.sbt에 다음을 추가합니다.
dockerBaseImage := "amazoncorretto:{VERSION}"



그런데
sbt "docker:publishLocal"

에서 빌드하려고하면
[error] java.lang.RuntimeException: Nonzero exit value: 127
[error]     at com.typesafe.sbt.packager.docker.DockerPlugin$.publishLocalDocker(DockerPlugin.scala:564)
[error]     at com.typesafe.sbt.packager.docker.DockerPlugin$.$anonfun$projectSettings$37(DockerPlugin.scala:209)
[error]     at com.typesafe.sbt.packager.docker.DockerPlugin$.$anonfun$projectSettings$37$adapted(DockerPlugin.scala:201)
[error]     at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error]     at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error]     at sbt.std.Transform$$anon$4.work(System.scala:67)
[error]     at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error]     at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]     at sbt.Execute.work(Execute.scala:278)
[error]     at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error]     at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error]     at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]     at java.lang.Thread.run(Thread.java:748)
[error] (Docker / publishLocal) Nonzero exit value: 127
[error] Total time: 77 s, completed 2020/02/22 11:21:07

같은 오류가 발생하여 실패합니다
생성 된 Dockerfile을 들여다 보면
RUN id -u demiourgos728 1>/dev/null 2>&1 || (( getent group 0 1>/dev/null 2>&1 || ( type groupadd 1>/dev/null 2>&1 && groupadd -g 0 root || addgroup -g 0 -S root )) && ( type useradd 1>/dev/null 2>&1 && useradd --system --create-home --uid 1001 --gid 0 demiourgos728 || adduser -S -u 1001 -G root demiourgos728 ))

같은 행이 있습니다.
amazoncorretto는 amazonlinux 기반이지만 amazonlinux에서는 addgroup 또는 adduser를 사용할 수 없기 때문에 (참고 1참고 2) 오류가 발생한 것으로 간주됩니다.

참고처에도 있는 대로,
RUN yum install -y shadow-utils

를 끼워 주는 것으로 회피할 수 있습니다만, 원래 움직이는 것만이라면 심플한 설정으로도 충분하므로 Dockerfile을 스크래치로 재작성해 버립니다.
htps //w w. s 또는 sbt. 오 rg / sbt - 나치 ゔ ぇ ぺ か r / 후 r 마 ts / 도 c 케 r. html # w 리테 - f 여 msc 등 tch
import com.typesafe.sbt.packager.docker._

dockerCommands := Seq(
  Cmd("FROM", "amazoncorretto:{VERSION}"),
  Cmd("COPY", "opt", "/opt"),
  ExecCmd("ENTRYPOINT", "/opt/docker/bin/{APP_NAME}")
)

생성 된 Dockerfile을 확인하려면 다음 명령을 사용할 수 있습니다.
sbt "show dockerCommands"
[info] * Cmd(FROM,WrappedArray(amazoncorretto:{VERSION}))
[info] * Cmd(COPY,WrappedArray(opt, /opt))
[info] * ExecCmd(ENTRYPOINT,WrappedArray(/opt/docker/bin/{APP_NAME}))

최소한의 내용이 되어 있는 것을 확인할 수 있습니다.
빌드도 안전하게 성공합니다.

좋은 웹페이지 즐겨찾기