Почему порты Docker не отображаются должным образом? - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь связать 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

Если я захожу в браузер на http://192.168.0.12:5000/

This site can’t be reached 
192.168.0.12 refused to connect.

Мои 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')

Журналы

  File "app.py", line 7
    cache.set(default_key : 'one')
                          ^
SyntaxError: invalid syntax

Почему?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Опечатка в назначении клавиш?Это работает:

>>> import redis
>>> default_key = '1'
>>> cache = redis.Redis()
>>> cache.set(default_key, 'one')
True
>>> cache.keys()
[b'1']
0 голосов
/ 03 марта 2019

Кажется, что основной процесс контейнера приложения Python не работает должным образом, поскольку он останавливает контейнер.Ваша команда docker run в порядке, плюс она, похоже, не подходит для случая с портом eny.По моему мнению, вы можете проверить команду:

python app.py

Проверьте основной процесс вашего app.py и убедитесь, что он будет работать, даже если соединение с базой данных не будет установлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...