我有一个简单的python程序,它执行以下操作
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')
我的Dockerfile如下
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"]
我的 cmd.sh 如下:
#!/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
一个简单的网页应该返回' hello docker'由于某些原因,当我使用docker运行时不起作用。
我为运行应用程序提供的命令:
docker build -t identidock。
docker run -d -p 5000:5000 identidock
当我卷曲localhost:5000时,我收到以下消息
卷曲:(7)无法连接到localhost端口5000:拒绝连接
我是否知道我的泊坞窗配置是否存在问题?
我在MacOSX上使用以下docker版本
Docker版本17.03.1-ce,构建c6d412e
参考来源 https://github.com/using-docker/using_docker_in_dev
修改-1
在泊坞广告ps -a上,容器状态显示' UP'
在docker日志CONTAINER_ID上,我得到以下日志
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)
答案 0 :(得分:2)
您将主机上的端口5000连接到容器上的端口5000。但是你没有在端口5000上运行任何东西,你在9090和9091上运行了一些东西。所以试试docker run -d -p 5000:9090 identidock
或docker run -d -p 5000:9091 identidock