为什么我的Docker端口没有正确暴露?

为什么我的Docker端口没有正确暴露?,docker,Docker,我正在尝试链接Python和Redis容器 docker run -d -p 5000:5000 --link=redis dockerapp:v0.3 6fe4b6a7914126d9436f6a517114e98fbd0dc8f5fa9a0c7d70673f89e08cb792 正在运行的容器的输出 docker ps -a CONTAINER ID IMAGE COMMAND CREATED

我正在尝试链接Python和Redis容器

docker run -d -p 5000:5000 --link=redis dockerapp:v0.3
6fe4b6a7914126d9436f6a517114e98fbd0dc8f5fa9a0c7d70673f89e08cb792
正在运行的容器的输出

docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
6fe4b6a79141        dockerapp:v0.3      "python app.py"          3 seconds ago       Exited (1) 2 seconds ago                        unruffled_mestorf
fb3f1364c9f9        dockerapp:v0.3      "python app.py"          11 minutes ago      Created                                         suspicious_mclean
2749b8453eb6        redis:3.2.0         "docker-entrypoint.s…"   16 minutes ago      Up 16 minutes               6379/tcp            redis
e5d9713c462a        add2d820aa27        "python app.py"          6 hours ago         Exited (137) 3 hours ago                        elastic_leavitt
ffcfb4cd0082        debian:jessie       "bash"                   28 hours ago        Exited (127) 28 hours ago                       thirsty_elion
4e8205831452        tomcat:8.0          "catalina.sh run"        30 hours ago        Exited (143) 27 hours ago                       objective_lichterman
49aab8cae20c        tomcat:8.0          "catalina.sh run"        31 hours ago        Exited (130) 30 hours ago                       objective_khayyam
如果我打开浏览器

我的app.py

app = Flask(__name__)
default_key = '1'
cache = redis.Redis(host='redis', port=6379, db=0)
cache.set(default_key : 'one')

@app.route('/', methods=['GET', 'POST'])
def mainpage():

    key = default_key
    if 'key' in request.form:
        key = request.form['key']

    if request.method == 'POST' and request.form['submit'] == 'save':
        cache.set(key,request.form['cache_value']) 

    cache_value = None;
    if cache.get(key):
        cache_value = cache.get(key).decode(utf-8)

    return render_template('index.html', key=key, cache_value=cache_value)

if __name__ == '__main__':
    app.run(host='0.0.0.0')
日志


为什么?

python应用程序的主容器进程似乎工作不正常,因为它使容器停止。您的docker run命令非常好,而且它看起来不像eny port colision案例。我认为您可以检查命令:

python app.py

检查app.py的主进程,确保即使数据库连接失败,它也能保持活动状态

钥匙分配中的打字错误?这项工作:

>>> import redis
>>> default_key = '1'
>>> cache = redis.Redis()
>>> cache.set(default_key, 'one')
True
>>> cache.keys()
[b'1']

ps
命令似乎表明您的映像没有运行,不是吗?退出(1)2秒前日志显示了什么?您的容器进程退出了。请提供
dockerapp
的dockerfile的内容和
docker logs 6fe4b6a79141的输出。我添加了日志,看一下。我知道了,它应该是默认的\u键,1
python app.py
>>> import redis
>>> default_key = '1'
>>> cache = redis.Redis()
>>> cache.set(default_key, 'one')
True
>>> cache.keys()
[b'1']