docker 容器从 Dockerfile 运行,而不是从 docker-compose 运行
docker container runs from Dockerfile but not from docker-compose
我有以下 Dockerfile:
FROM python:3.8-slim
RUN apt-get update && \
apt-get install -y --no-install-recommends gcc libc-dev
WORKDIR /app
COPY . .
RUN pip install --no-cache-dir -r requirements.txt
CMD [ "python", "proxy-scraper-checker/main.py" ]
以及以下 docker-compose.yml:
version: "3.3"
services:
proxy-app:
build:
context: .
dockerfile: Dockerfile
container_name: proxy-app
environment:
- PYTHONUNBUFFERED=1
如果我 运行 Dockerfile 手动通过 docker cmd 以下列方式:
C:\Projects\myprojects\docker-example>docker build --tag my_app .
C:\Projects\myprojects\docker-example>docker run --rm -it my_app
一切似乎都正常,我得到了它实际执行的应用程序输出日志:
2020-05-30 13:38:53,454 - Thread-1 - INFO - Starting scheduler...
2020-05-30 13:38:55,457 - Thread-1 - INFO - Running job Every 2 seconds do run_pldown_job(<uvloop.Loop running=False closed=False debug=False>) (last run: [never], next run: 2020-05-30 13:38:55)
2020-05-30 13:38:55,457 - Thread-1 - INFO - Pldown Job starting...
80.187.140.26:8080 HTTPS Server/OS Error:
80.187.140.26:80 HTTP Server/OS Error:
146.148.59.22:80 HTTPS Server/OS Error:
89.216.39.217:4145 Error: Connection closed unexpectedly
185.49.93.102:4145 Error: Connection closed unexpectedly
80.240.250.222:4145 Error: Connection closed unexpectedly
185.123.2.170:1080 Error: Connection closed unexpectedly
但是,当我尝试通过 docker-compose 以下列方式执行我的应用程序时:
C:\Projects\myprojects\docker-example>docker-compose up
我的应用程序似乎可以正常启动,但随后无法继续执行。下面是输出:
Creating proxy-app ... done
Attaching to proxy-app
proxy-app | 2020-05-30 13:28:02,638 - Thread-1 - INFO - Starting scheduler...
我尝试执行显示日志命令:
C:\Projects\myprojects\docker-example>docker logs proxy-app
但我得到的唯一日志是第一行:
2020-05-30 13:28:02,638 - Thread-1 - INFO - Starting scheduler...
有什么建议吗?
更新:
我尝试通过 docker 使用以下方法构建图像:
docker build --tag my_app .
我在撰写文件中使用了这张图片:
version: "3.3"
services:
proxy-app:
image: my_app
它实际上是这样工作的。
但是,问题仍然存在,为什么我这样做时它不起作用:
version: "3.3"
services:
proxy-app:
build:
context: .
dockerfile: Dockerfile
container_name: proxy-app
我似乎必须在我的 docker-compose 文件中为我的 python 应用程序添加一个卷,这样我在那里所做的任何更改都会在我从 docker-撰写.
所以我的新 docker-compose.yml 看起来像:
version: '3'
services:
db:
image: postgres:latest
container_name: postgres
environment:
- POSTGRES_DB=proxydb
- POSTGRES_USER=danny
- POSTGRES_PASSWORD=123
ports:
- "5432:5432"
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
proxy-app:
build: .
container_name: proxy-app
volumes:
- ./src:/src
我有以下 Dockerfile:
FROM python:3.8-slim
RUN apt-get update && \
apt-get install -y --no-install-recommends gcc libc-dev
WORKDIR /app
COPY . .
RUN pip install --no-cache-dir -r requirements.txt
CMD [ "python", "proxy-scraper-checker/main.py" ]
以及以下 docker-compose.yml:
version: "3.3"
services:
proxy-app:
build:
context: .
dockerfile: Dockerfile
container_name: proxy-app
environment:
- PYTHONUNBUFFERED=1
如果我 运行 Dockerfile 手动通过 docker cmd 以下列方式:
C:\Projects\myprojects\docker-example>docker build --tag my_app .
C:\Projects\myprojects\docker-example>docker run --rm -it my_app
一切似乎都正常,我得到了它实际执行的应用程序输出日志:
2020-05-30 13:38:53,454 - Thread-1 - INFO - Starting scheduler...
2020-05-30 13:38:55,457 - Thread-1 - INFO - Running job Every 2 seconds do run_pldown_job(<uvloop.Loop running=False closed=False debug=False>) (last run: [never], next run: 2020-05-30 13:38:55)
2020-05-30 13:38:55,457 - Thread-1 - INFO - Pldown Job starting...
80.187.140.26:8080 HTTPS Server/OS Error:
80.187.140.26:80 HTTP Server/OS Error:
146.148.59.22:80 HTTPS Server/OS Error:
89.216.39.217:4145 Error: Connection closed unexpectedly
185.49.93.102:4145 Error: Connection closed unexpectedly
80.240.250.222:4145 Error: Connection closed unexpectedly
185.123.2.170:1080 Error: Connection closed unexpectedly
但是,当我尝试通过 docker-compose 以下列方式执行我的应用程序时:
C:\Projects\myprojects\docker-example>docker-compose up
我的应用程序似乎可以正常启动,但随后无法继续执行。下面是输出:
Creating proxy-app ... done
Attaching to proxy-app
proxy-app | 2020-05-30 13:28:02,638 - Thread-1 - INFO - Starting scheduler...
我尝试执行显示日志命令:
C:\Projects\myprojects\docker-example>docker logs proxy-app
但我得到的唯一日志是第一行:
2020-05-30 13:28:02,638 - Thread-1 - INFO - Starting scheduler...
有什么建议吗?
更新:
我尝试通过 docker 使用以下方法构建图像:
docker build --tag my_app .
我在撰写文件中使用了这张图片:
version: "3.3"
services:
proxy-app:
image: my_app
它实际上是这样工作的。
但是,问题仍然存在,为什么我这样做时它不起作用:
version: "3.3"
services:
proxy-app:
build:
context: .
dockerfile: Dockerfile
container_name: proxy-app
我似乎必须在我的 docker-compose 文件中为我的 python 应用程序添加一个卷,这样我在那里所做的任何更改都会在我从 docker-撰写.
所以我的新 docker-compose.yml 看起来像:
version: '3'
services:
db:
image: postgres:latest
container_name: postgres
environment:
- POSTGRES_DB=proxydb
- POSTGRES_USER=danny
- POSTGRES_PASSWORD=123
ports:
- "5432:5432"
volumes:
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
proxy-app:
build: .
container_name: proxy-app
volumes:
- ./src:/src