Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Problema ao criar imagem Docker

Estou com o Seguinte erro ao criar o Docker image no linux:

$ sudo docker build - < Dockerfile
[+] Building 1.2s (6/8)                                                                                                                                                                                                                       
 => [internal] load build definition from Dockerfile                                                                                                                                                                                     
 => => transferring dockerfile: 232B                                                                                                                                                                                                    
 => [internal] load .dockerignore                                                                                                                                                                                                        
 => => transferring context: 2B                                                                                                                                                                                                          
 => [internal] load metadata for docker.io/library/openjdk:17                                                                                                                                                                            
 => [internal] load build context                                                                                                                                                                                                       
 => => transferring context: 2B                                                                                                                                                                                                         
 => CACHED [1/4] FROM docker.io/library/openjdk:17@sha256:528707081fdb9562eb819128a9f85ae7fe000e2fbaeaf9f87662e7b3f38cb7d8                                                                                                               0.0s
 => ERROR [2/4] RUN addgroup -S spring && adduser -S spring -G spring                                                                                                                                                                    0.6s
------                                                                                                                                                                                                                                        
 > [2/4] RUN addgroup -S spring && adduser -S spring -G spring:
#0 0.547 /bin/sh: addgroup: command not found
------
Dockerfile:2
--------------------
   1 |     FROM openjdk:17
   2 | >>> RUN addgroup -S spring && adduser -S spring -G spring
   3 |     USER spring:spring
   4 |     WORKDIR /app
--------------------
ERROR: failed to solve: process "/bin/sh -c addgroup -S spring && adduser -S spring -G spring" did not complete successfully: exit code: 127

Meu Dockerfile esta assim:

FROM openjdk:17
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
WORKDIR /app
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.janvmr"]
3 respostas
solução!

Olá Adriano, tudo bem?

O erro que está ocorrendo na construção da imagem Docker é causado pelo fato de que o comando addgroup não está disponível no sistema operacional base da imagem Docker openjdk:17. Para corrigir o problema, você pode adicionar o pacote addgroup ao Dockerfile. Adicione o comando apt-get update para atualizar a lista de pacotes disponíveis e, em seguida, adicione o comando apt-get install -y adduser para instalar o pacote adduser que inclui o comando addgroup.

Exemplo:

FROM openjdk:17
RUN apt-get update && apt-get install -y adduser
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
WORKDIR /app
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.janvmr"]

Olá Otávio! obrigado por responder e desculpe a demora para o retorno.

Ainda estou com problemas se adiciono a link que você sugerio acontece o seguinte erro

 => [internal] load build definition from Dockerfile  
 => => transferring dockerfile: 288B
 => [internal] load .dockerignore 
 => => transferring context: 2B
 => [internal] load metadata for docker.io/library/openjdk:17-alpine
 => CACHED [1/5] FROM docker.io/library/openjdk:17-alpine@sha256:4b6abae565492dbe9e7a894137c966a7485154238902f2f25e9dbd9784383d81
 => [internal] load build context 
 => => transferring context: 2B 
 => ERROR [2/5] RUN apt-get update && apt-get install -y adduser
------                                                                                                                                                                                                                                        
 > [2/5] RUN apt-get update && apt-get install -y adduser:
#0 0.744 /bin/sh: apt-get: not found
------
Dockerfile:2
--------------------
   1 |     FROM openjdk:17-alpine
   2 | >>> RUN apt-get update && apt-get install -y adduser
   3 |     RUN addgroup -S spring && adduser -S spring -G spring
   4 |     USER spring:spring
--------------------
ERROR: failed to solve: process "/bin/sh -c apt-get update && apt-get install -y adduser" did not complete successfully: exit code: 127

A instrutora do curso usa a versão alpine no jdk. Na primeira vez que tentei fazer o dockerfile não apareceu a versão openjdk:17-alpine par selecionar, agora nas tentativas de fazer funcionar consegui selecionar essa versão. Se faço o dockerfile com essa versão do jdk e sem a linha que você sugeriu da o seguinte erro:

 => [internal] load .dockerignore 
 ...
 > CACHED [3/4] WORKDIR /app
 => ERROR [4/4] COPY target/*.jar app.jar 
------
 > [4/4] COPY target/*.jar app.jar:
------
Dockerfile:6
--------------------
   4 |     WORKDIR /app
   5 |     ARG JAR_FILE=target/*.jar
   6 | >>> COPY ${JAR_FILE} app.jar
   7 |     ENTRYPOINT ["java","-jar","/app.janvmr"]
--------------------
ERROR: failed to solve: lstat /var/lib/docker/tmp/buildkit-mount3644536746/target: no such file or directory

Esse erro é porque o comando apt-get não está disponível no Alpine Linux, que é uma distribuição Linux muito mais leve do que o Debian ou Ubuntu. Se você estiver usando o Alpine Linux, precisará usar o comando apk em vez do apt-get para instalar pacotes.

No seu Dockerfile, substitua a linha RUN apt-get update && apt-get install -y adduser por RUN apk add --no-cache adduser

O segundo erro parece que o Docker não está encontrando o arquivo .jar que você especificou. Certifique-se de que o arquivo .jar existe na pasta target antes de executar o COPY no Dockerfile. Se o arquivo .jar não existir na pasta target, o Docker não poderá copiá-lo para o container.