当我运行 docker-compose build
和 docker-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)
它不会抛出任何错误,只是不起作用。我做错了什么吗?