Eu construí meu pequeno aplicativo Python(flask). O contêiner está aqui docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4146fd976547 identidock_identidock:latest "/cmd.sh" 5 minutes ago Up 5 minutes 9090/tcp, 9191/tcp agitated_leakey
Se eu tentar
curl localhost:5000
curl: (7) Failed to connect to localhost port 5000: Connection refused
Eu verifiquei sudo netstat -an | grep -E "5000" unix 3 [ ] STREAM CONNECTED 25000
Não está listando em 5000. linha yaml com portas
ports:
- "5000:5000"
Se eu executar meu contêiner
docker exec -it agitated_leakey /bin/bash
uwsgi@4146fd976547:/app$ netstat -ln
bash: netstat: command not found
Meu Dockerfile
RUN pip install Flask==0.10.1 uWSGI==2.0.8
WORKDIR /app
COPY app /app
COPY cmd.sh /
EXPOSE 9090 9191
Por que isso acontece?
Um problema alternativo pode ser com o modo. Na seção de publicação, tive que definir
mode
explicitamente para hospedar e tudo funcionou:docker service create --name registry --publish published=5000,target=5000,mode=host registry:2
Da saída do docker ps parece que sua porta não foi exposta.
Execute seu contêiner mapeando a porta e, se você ainda enfrentar o mesmo problema, ssh para o contêiner e use o comando a seguir.
Parece que o netstat não está instalado no contêiner. Você pode executar um
yum install netstat
para instalar e verificar.Este guia irá ajudá-lo a verificar. Verifique
docker ps
a saída no final.