【问题标题】:How to use MySQL and Flask-PonyORM App with docker-compose?如何将 MySQL 和 Flask-PonyORM 应用程序与 docker-compose 一起使用?
【发布时间】:2018-07-05 06:46:13
【问题描述】:

我在如何配置我的应用程序以使用 docker 和 docker-compose 集成 Flask、PonyORM 和 MySQL 时遇到问题。

这是我的.yml 文件:

version: '3.1'
services:
  mysql:
    image: mysql
    restart: always
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: kofre.db

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

  python:
    build: .
    volumes:
      - .:/kofre-app
    ports:
      - 5000:5000
    depends_on:
      - mysql

这是我的 Dockerfile:

FROM python:3
ENV PYTHONBUFFERED 1

RUN mkdir /kofre-app

WORKDIR /kofre-app

COPY setup.py /kofre-app/
RUN python setup.py install

COPY . /kofre-app/

CMD [ "python", "./run.py" ]

这是我的 Pony 初始化脚本的一部分:

app = Flask(__name__)
app.config.from_object('config')

db = Database()
db.bind(provider = 'mysql', host = 'mysql', user = 'root', passwd = 'root', db = 'kofre.db')

我的问题:

  1. 有时当我运行命令docker-compose up 时,我收到消息:“无法连接到'mysql' 上的MySQL 服务器(超时)”。 PonyORM 有问题吗?我应该使用其他框架吗?
  2. 有时,mysql 服务似乎锁定了提示,之后没有任何反应。

有人可以帮我解决这个问题吗?非常感谢您的帮助。

【问题讨论】:

    标签: python-3.x flask docker-compose dockerfile ponyorm


    【解决方案1】:

    经过大量搜索和尝试,我终于让它工作了。我的问题是 mysql 容器的 environment 部分中的 docker-compose.yml 中的 sintax 不正确。

    现在,我的新 docker-compose.yml 看起来像这样:

    version: '3'
    services:
      python:
        build: .
        container_name: python
        volumes:
          - .:/kofre-app
        ports:
          - 5000:5000
        links:
          - mysql
    
      adminer:
        image: adminer
        container_name: adminer
        ports:
          - 8000:8080
        links:
          - mysql
    
      mysql:
        image: mysql:5.6
        container_name: mysql
        restart: always
        ports:
          - 3306:3306
        environment:
          - MYSQL_ROOT_PASSWORD=root
          - MYSQL_DATABASE=kofre.db
          - MYSQL_USER=root
          - MYSQL_PASSWORD=root
    

    我在this another answer这里找到了这个问题的答案

    【讨论】:

      猜你喜欢
      • 2019-07-05
      • 2019-12-25
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多