1

I'm having a trouble on how to configure my application to integrate Flask, PonyORM, and MySQL using docker and docker-compose.

This is my .yml file:

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

This is my 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" ]

and this is a part of my Pony initialization script:

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

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

My problems:

  1. Sometimes when I run the command docker-compose up I'm getting the message: "Can't connect to MySQL server on 'mysql' (timed out)". Is it a proble with PonyORM? Should I use another framework?
  2. And sometimes, the mysql service seems to lock the prompt and nothing happens after that.

Could someone help me with this problems? I'd appreciate your help.

1 Answer 1

1

After a lot of search and tries, I finally got it working. My problem was the incorrect sintax in my docker-compose.yml in the section of the environment of the mysql container.

Now, my newer docker-compose.yml looks like this:

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

The answer to this problem I found here in this another answer

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.