3
respostas

Aplicação Rodando no Docker mas inacessivel pela porta 8080 no Host-Ubuntu

Dockerfile

FROM node:latest
MAINTANER Yuri Nascimento
COPY .  /var/www
WORKDIR /var/www
RUN npm install
EXTRYPOINT ["npm"]["start"]
EXPOSE 3000
3 respostas

Quando iniciar o container com base na imagem gerada pelo seu dockerfile, informe a porta:

docker run -d -p 8080:3000 my_image

referência: https://docs.docker.com/engine/reference/run/

Eu executei esse comando, mas aplicação só se mantém por alguns segundos, dando dando docker ps na segunda vez a aplicação já não consta na lista.

Olá Fabiano, tudo bem? É bem estranho isso, porque como o Otávio falou, executando o comando com o -d indica que queremos que o container execute em modo desanexado, ou seja em segundo plano, assim podemos ficar com o terminal livre para executar outras tarefas. Porém acho que o problema talvez seja o nome MAINTANER que na verdade tem o I, sendo MAINTAINER. Então tenta executar o build da imagem com o conteúdo do dockerfile da seguinte forma:

FROM node:latest
MAINTAINER Yuri Nascimento
ENV NODE_ENV=development
COPY . /var/www
WORKDIR /var/www
RUN npm install 
ENTRYPOINT ["npm", "start"]
EXPOSE 3000

Aproveitei e coloquei a variável de ambiente ENV NODE_ENV=development.

Então você deve fazer o build novamente da imagem e depois executar o comando:

docker run -d -p 8080:3000 nome_imagem

E fala pra gente se funcionou!