Reputation: 1178
I have a simple python program that does the following
identitydock.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello Docker!\n'
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
My Dockerfile is as follows
Dockerfile
FROM python:3.4
RUN groupadd -r uwsgi && useradd -r -g uwsgi uwsgi
RUN pip install Flask==0.10.1 uWSGI==2.0.8
WORKDIR /app
COPY app /app
COPY cmd.sh /
EXPOSE 9090 9191
USER uwsgi
CMD ["/cmd.sh"]
my cmd.sh is as follows:
#!/bin/bash
set -e
if [ "$ENV" = 'DEV' ]; then
echo "Running Development Server"
exec python "identidock.py"
else
echo "Running Production Server"
exec uwsgi --http 0.0.0.0:9090 --wsgi-file /app/identidock.py \
--callable app --stats 0.0.0.0:9191
fi
A simple web page that should return 'hello docker' for some reason does not work when I run using docker.
The commands I gave to run the application:
docker build -t identidock .
docker run -d -p 5000:5000 identidock
When I do curl localhost:5000 I get the following message
curl: (7) Failed to connect to localhost port 5000: Connection refused
May I know if there is an issue with my docker configuration?
I am using the following docker version on MacOSX
Docker version 17.03.1-ce, build c6d412e
Reference source https://github.com/using-docker/using_docker_in_dev
Edit -1
On docker ps -a , the container status shows 'UP'
on docker logs CONTAINER_ID, i get the following logs
Running Production Server
*** Starting uWSGI 2.0.8 (64bit) on [Thu Jul 6 02:04:04 2017] ***
compiled with version: 4.9.2 on 06 July 2017 02:03:16
os: Linux-4.4.74-boot2docker #1 SMP Mon Jun 26 18:01:14 UTC 2017
nodename: 323e6ff35d0d
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 1
current working directory: /app
detected binary path: /usr/local/bin/uwsgi
your processes number limit is 1048576
your memory page size is 4096 bytes
detected max file descriptor number: 1048576
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uWSGI http bound on 0.0.0.0:9090 fd 4
uwsgi socket 0 bound to TCP address 127.0.0.1:45710 (port auto-assigned) fd 3
Python version: 3.4.6 (default, Jun 21 2017, 18:32:49) [GCC 4.9.2]
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x1bd9640
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 145536 bytes (142 KB) for 1 cores
*** Operational MODE: single process ***
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x1bd9640 pid: 1 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 1)
spawned uWSGI worker 1 (pid: 6, cores: 1)
*** Stats server enabled on 0.0.0.0:9191 fd: 13 ***
spawned uWSGI http 1 (pid: 7)
Upvotes: 1
Views: 1589
Reputation: 77
I guess you are reading the book Developing and Deploying Software with Containers. I met similar problem and only to find that I didn't follow the steps completely.
According the codes and commands you gives, the author is tying to replace the original Flask WebServer (bind port 5000 in container with port 5000 in host machine) with uWSGI (bind port 9090 in container with 9090 in host machine). But docker run -d -p 5000:5000 identidock
indicates that you insist on binding port 5000 in container with port 5000 in host machine, so you can't access uWSGI that is running in the container.
The command EXPOSE 9090 9191
used in dockerfile
only assigns ports for the container, so you need to allocate ports for the host machine.
By the way, the author recommend to use -P
to make host machine allocate available ports randomly, so you don't need to assign ports like -p 9090:9090 -p 9191:9191
manually.
Upvotes: 0
Reputation: 8819
You're connecting port 5000 on the host to port 5000 on the container. But you don't have anything running on port 5000, you have something running on 9090 and 9091. so try docker run -d -p 5000:9090 identidock
or docker run -d -p 5000:9091 identidock
Upvotes: 2