3
respostas

Criar volume com Dockerfile

Olá,

Como posso criar um volume utilizando Dockerfile?

Tentei assim:

FROM node:latest
LABEL maintainer="Italo Macellone"
ENV PORT=3000
ENV WORKDIR="/var/www"
COPY . $WORKDIR
WORKDIR $WORKDIR
RUN npm install
ENTRYPOINT [ "npm", "start" ]
EXPOSE $PORT

Na hora de executar:

docker run -d -p 8080:3000 -v "C:\Users\Italo\Desktop\volume-exemplo:/var/www" imacellone/node

Porém o container é criado e já cai na sequência.

Como proceder?

Obrigado!

3 respostas

Olá, Ítalo, tudo bem?

Após você rodar o docker run, rode o comando

docker ps -a

e me passe a saída dele, por favor. A princípio não vi nada de errado no que você fez.

Olá Vitor,

Segue output do terminal:

PS C:\Users\Italo\Desktop\volume-exemplo> docker run -d -p 8080:3000 -v "C:\Users\Italo\Desktop\volume-exemplo:/var/www" imacellone/node;
df465b2019267346f1281cde1c0b2deebc42a423008ba6f18e7f2f1aa8cd8dd0

PS C:\Users\Italo\Desktop\volume-exemplo> docker ps -a;
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
df465b201926        imacellone/node     "npm start"         35 seconds ago      Exited (1) 32 seconds ago                       cocky_euler

Oi, Ítalo,

O comando para criar o volume parece estar correto. Porém ao tentar criar o container, realmente algo está errado, porque o Exited com um número diferente de zero significa que deu algum erro. Se você rodar o mesmo comando, substituindo o parâmetro -d por -it, vai conseguir saber o que houve exatamente com a criação desse container. Se quiser colocar aqui essa saída para gente tentar entender o que está acontecendo.

E só por desencargo, tente criar uma imagem substituindo o WORKDIR $WORKDIR por WORKDIR /var/www e EXPOSE $PORT por EXPOSE 3000.