1

我在如何配置我的应用程序以使用 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服务似乎锁定了提示,之后没有任何反应。

有人可以帮我解决这个问题吗?我会很感激你的帮助。

4

1 回答 1

1

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

现在,我的新人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

我在这个另一个答案中找到了这个问题的答案

于 2018-01-26T15:00:38.503 回答