首页 > 解决方案 > Python Flask 未与 docker-compose 一起运行

问题描述

我有一个简单的 Flask 应用程序,由一个 Web 部件和一个数据库部件组成。代码可以在这里找到。在本地运行这个 Flask 应用程序非常好。

我想让应用程序在 Docker 上运行。因此,我创建了以下 docker-compose 文件。

version: '3.6'

services:
  web:
    build: .
    depends_on:
      - db
    networks:
      - default
    ports:
      - 50000:5000
    volumes:
      - ./app:/usr/src/app/app
      - ./migrations:/usr/src/app/migrations
    restart: always

  db:
    environment:
      MYSQL_ROOT_PASSWORD: ***
      MYSQL_DATABASE: flask_employees
      MYSQL_USER: root
      MYSQL_PASSWORD: ***
    image: mariadb:latest
    networks:
      - default
    ports:
      - 33060:3306
    restart: always
    volumes:
       - db_data:/var/lib/mysql

volumes:
    db_data: {}

在 Flask 应用程序中,我设置了以下SQLALCHEMY_DATABASE_URI = 'mysql://root:***@localhost:33060/flask_employees'.

当我这样做时docker-compose up,两个容器都已创建并正在运行,但是当我转到 http://localhost:50000 或http://127.0.0.1:50000时,我得到:

无法访问此站点,127.0.0.1 拒绝连接。

标签: flaskdocker-compose

解决方案


您必须在“0.0.0.0”主机上运行烧瓶应用程序,以便能够从 docker 容器映射端口。

if __name__ == '__main__':
    app.run(host='0.0.0.0', port='5000')

推荐阅读