簡體   English   中英

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

如果我以下列方式通過 docker cmd 手動運行 Dockerfile:

C:\Projects\myprojects\docker-example>docker build --tag my_app .
C:\Projects\myprojects\docker-example>docker run --rm -it my_app

一切似乎工作正常,我得到了它實際正在執行的應用程序 output 日志:

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

我的應用程序似乎可以正常啟動,但它不會繼續執行。 下面是 output:

Creating proxy-app ... done
Attaching to proxy-app
proxy-app    | 2020-05-30 13:28:02,638 - Thread-1 - INFO - Starting scheduler...

我嘗試執行 show logs 命令:

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-compose 構建時實際反映出來。

所以我的新 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM