当前位置: 首页 > 知识库问答 >
问题:

docker容器从Dockerfile运行,但不是从docker-compose1运行

蒯卓君
2023-03-14

我有以下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

看起来一切正常,我得到了它实际执行的应用程序输出日志:

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-comment以以下方式执行我的应用程序时:

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...

我尝试执行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

共有1个答案

洪飞白
2023-03-14

似乎我必须为我的python应用程序在docker-comment文件中添加一个卷,这样我在那里所做的任何更改都将在我从docker-composs构建时得到实际反映。

因此,我的新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
 类似资料:
  • 问题内容: 我在CI和CD上创建了Jenkinsfile,Dockerfile,Dockerfile.test到CI和CD,在GitHub上构建了我的服务器API,我在Jenkins上构建了该构建,并且构建成功,并且我的docker在Jenkinsfile阶段也在容器上运行,我创建了用于测试和部署在服务器API上,并使用docker作为容器 我也使用docker-compose在docker上运行

  • 我有一个Docker的图像火花Jupyter(https://github.com/zipfian/spark-install) 我为hadoop准备了另一个docker图片。(https://github.com/kiwenlau/hadoop-cluster-docker) 我在Ubuntu中运行上述两张图片中的两个容器。对于第一个容器:我能够成功地启动jupyter并运行python代码:

  • 假设我们的系统中有4个不同的图像,它们的名称如下: 假设我们运行container\u 1。我的问题是:container\u 1运行是否可能会保留container\u 2这样的容器?我搜索了一下,发现的问题和文章是:docker在另一个docker中运行?但这不是我的情况,我需要在container\u 1旁边运行其他容器。我对码头工人的了解很少。

  • 我想通过Docker容器在AWS Lamda上运行selenium脚本。 我正在使用AWS EC2构建容器,然后通过AWS Lambda RIE在本地测试容器。一旦测试成功,容器将在ECR注册,以便馈送AWS Lambda。 尽管RIE在EC2上的本地测试总是成功的,但我无法让Lambda正常工作。Lambda测试当前总是失败,并显示以下错误消息: 在这里,您可以找到我实际使用的所有代码: 文档

  • 本文向大家介绍Docker容器中运行nginx,包括了Docker容器中运行nginx的使用技巧和注意事项,需要的朋友参考一下 nginx简介 Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。与旧版本(<=2.2)的Apache不同,nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑,削减了上下文调度开销,所以并发服务能

  • Kibana 的 Docker 镜像可以从 Elastic 官网上的 Docker 镜像仓库获取。该镜像是随 X-Pack 一起打包的。 注意:X-Pack 在这个 image 中是预装好的。安装了 X-Pack,Kibana 会去连接同样带有 X-Pack 的 Elasticsearch 集群。 获取镜像 向 Elastic Docker 仓库发送一条 docker pull 命令就可以获取 K