1
resposta

[Dúvida] O container não está sendo criado a partir da imagem gerada - aula 03 - NODE

Bom dia,

O que está faltando para minha imagem funcionar e gerar um container?

baixei o arquivo zip do projeto node e descompactei na pasta que criei : "/opt/dados/imagem;" nessa pasta "imagem" tenho os aquivos que foram descompactados e o arquivo "Dockerfile" com o seguinte conteudo:

FROM node:14 WORKDIR /app-node COPY . . RUN npm install ENTRYPOINT npm start

Depois gerei a imagem com o comando:

#docker build -t 9crismaciel/app-node:1.0 .

A IMAGEM FOI GERADA, VEJAM:

REPOSITORY TAG IMAGE ID CREATED SIZE 9crismaciel/app-node 1.0 acf5137ae2a1 18 hours ago 917MB

OBS: porém quando vou criar o container a partir dessa imagem, não funciona, digito o seguinte comando para criar o container:

docker run -d -p 8081:3000 9crismaciel/app-node:1.0

logo após quando digito o comando para ver o container em execucao, não mostra nada, vejam:

#docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

DIGITANDO O COMANDO QUE MOSTRA TODOS OS OUTROS JÁ EXECUTADOS

docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 77074a041254 9crismaciel/app-node:1.0 "/bin/sh -c 'npm sta…" 7 minutes ago Exited (254) 7 minutes ago epic_bose e3b08e891168 9crismaciel/app-node:1.0 "/bin/sh -c 'npm sta…" 34 minutes ago Exited (254) 34 minutes ago exciting_mendel

Alguem pode me ajudar? desde já agradeço.

1 resposta

Fiz uns testes e percebi que o comando node install não estava sendo executado. Inverti as posições do comando copy com o workdir e tudo funcionou perfeitamente.

FROM node:14

COPY . .

WORKDIR /app-node

RUN npm install

ENTRYPOINT npm start

O problema ocorre pois o comando WORKDIR /app-node cria uma pasta vazia de nome /app-node dentro do container e seguida navega para dentro dela. O comando COPY . . copia todos os arquivos do diretório local atual para dentro da pasta /app-node do container. Desta forma os arquivos do node ficam localizados no diretório /app-node/app-node dentro do container. Como o diretório atual do container é apenas o /app-node, então ele não encontra os arquivos do node e gera um erro.