【发布时间】:2021-02-27 02:52:24
【问题描述】:
无论如何,我都不是 Docker 专家,所以也许它有一个简单的解决方案。我有这样的“奇怪”问题:
长期以来,我在本地开发中使用 Docker-compose 为我的 Python Flask gunicorn 服务器设置了一个非常简单的设置,我的 docker-compose.yaml 看起来像这样:
version: '2'
services:
website:
build: .
command: >
gunicorn -b 0.0.0.0:443
--reload
--workers=2
--timeout 0
--certfile=scert.crt
--keyfile=skey.key
db_app.app:create_app()
environment:
PYTHONUNBUFFERED: 'true'
volumes:
- '.:/db_app'
ports:
- '443:443'
我通常以docker-compose up --build 启动它,刷新本地文件会自动重建服务器等等 - 很棒。客户端应用程序连接也没有任何问题。但现在我需要让它与 Dockerfile 一起工作(把它放在 Google Cloud Run 上)。我想出了这个:
FROM python:3.8-slim
ENV PYTHONUNBUFFERED True
ENV INSTALL_PATH /db_app
RUN mkdir -p ${INSTALL_PATH}
WORKDIR ${INSTALL_PATH}
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
EXPOSE 443
CMD exec gunicorn --bind 0.0.0.0:443 --reload --workers=2 --threads 8 --timeout 0 --certfile=scert.crt --keyfile=skey.key db_app.app:create_app
它构建正常,运行正常但是.. 每当我尝试连接我的客户端应用程序时,我都会收到 503。它发生在 Google Cloud Run 和本地,我只是看不到来自服务器的任何输出,甚至虽然它确实运行(当它以docker run containername 启动时,所以它执行 dockerfile 而不是 docker-compose(它工作得很好))。我做错了什么?
附加信息:
docker run containername ls -l /db_app的结果
total 28
drwxr-xr-x 3 root root 4096 Sep 17 16:12 config
-rw-r--r-- 1 root root 496 Nov 14 11:13 docker-compose.yaml
drwxr-xr-x 2 root root 4096 Sep 16 20:34 instance
-rw-r--r-- 1 root root 252 Oct 11 15:37 requirements.txt
-rwxrwxrwx 1 root root 1456 Oct 15 14:09 scert.crt
-rwxrwxrwx 1 root root 1704 Oct 15 14:09 skey.key
drwxr-xr-x 3 root root 4096 Oct 27 18:05 db_app
【问题讨论】:
-
你能把
docker run containername ls -l /db_app的结果贴出来吗? -
@emi 已发布。
-
正确吗?我看到有一个
/db_app/db_app目录。 -
您的应用需要任何数据库实例吗?
标签: docker flask docker-compose gunicorn google-cloud-run