无法连接到烧瓶 - 使用 docker-compose 的 mysql 应用程序

时间:2021-05-28 15:16:11

标签: mysql docker flask docker-compose

当我运行 docker-compose builddocker-compose run api 时,我的 Flask 应用程序似乎可以正常启动,控制台返回

Creating network "cuembyalchemy_default" with the default driver
Pulling db (mysql:5.7.22)...
5.7.22: Pulling from library/mysql
be8881be8156: Pull complete
c3995dabd1d7: Pull complete
9931fdda3586: Pull complete
bb1b6b6eff6a: Pull complete
a65f125fa718: Pull complete
2d9f8dd09be2: Pull complete
37b912cb2afe: Pull complete
79592d21cb7f: Pull complete
00bfe968d82d: Pull complete
79cf546d4770: Pull complete
2b3c2e6bacee: Pull complete
Digest: sha256:aaba540cdd9313645d892f4f20573e8b42b30e5be71c054b7befed2f7da5f85b
Status: Downloaded newer image for mysql:5.7.22
Creating db ... done
Creating cuembyalchemy_api_run ... done
 * Serving Flask app 'app' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 975-988-017

在这一点上,一切似乎都很好。但是,当我尝试使用邮递员向 http://127.0.0.1:5000/api/v1/team(它的端点之一)发送请求时,它只返回 Error: connect ECONNREFUSED 127.0.0.1:5000

这是我的 docker-compose.yml

version: '3.7'

services:
    db:
        image: mysql:5.7.22
        restart: always
        container_name: db
        environment: 
            MYSQL_DATABASE: backend_test_alchemy
            MYSQL_USER: root
            MYSQL_PASSWORD: root
            MYSQL_ROOT_PASSWORD: root
        volumes:
            - .dbdata:/var/lib/mysql
        command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
        ports:
            - 3306:3306

    api:
        build: .
        container_name: api_test
        restart: always
        deploy:
            restart_policy:
                condition: any
                delay: 5s
                window: 120s
        depends_on: 
            - db
        ports:
            - "5000:5000"
        

我的 dockerfile:

FROM python:3.8.10-alpine3.13

RUN apk add --no-cache python3-dev && pip3 install --upgrade pip

RUN apk add build-base

WORKDIR /app

COPY . /app

RUN pip install -r requirements.txt


CMD ["python3", "src/app.py"]

这里是 app.py 的启动方式

env_path = Path('..')/'.env'
load_dotenv(dotenv_path=env_path)

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://root:root@db/backend_test_alchemy?charset=utf8mb4'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']= False
app.config['JSON_SORT_KEYS'] = False

db = SQLAlchemy(app)


#logic


app.run(debug=True)

它不会抛出任何错误,只是不起作用。我做错了什么吗?

0 个答案:

没有答案