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のセクションにある私のシンタックスが正しくないことでした。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 に答える