gpt4 book ai didi

docker - 我如何在加载Docker容器后不运行docker-compose up的情况下运行它?

转载 作者:行者123 更新时间:2023-12-02 18:07:58 25 4
gpt4 key购买 nike

我创建了一个Dockerfiledocker-compose.yml文件。我可以在构建并运行Django Web应用程序的Windows 10上运行docker-compose up。然后,我可以成功浏览到127.0.0.1:7000并练习我的Web应用程序。
我的问题是,一旦退出,如何在不运行docker-compose up的情况下启动图像?
当我键入docker images时,我看到两个图像:pythonmy_web_app。我试过了

docker run --publish 7000:8000 -- detach my_web_app
但它立即退出。
我的Dockerfile
FROM python:3.6
ENV PYTHONUNBUFFERED 1
COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt
RUN mkdir /code
WORKDIR /code
ADD . /code/
RUN useradd user
USER user
我的docker-compose.yml
version: "3"

services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "7000:8000"

最佳答案

如果您使用docker run my_web_app,它会立即退出,因为Dockerfile中没有CMD
正如其他人回答的那样,您可以运行docker-compose up重新运行容器。 docker-compose.yml文件包含启动容器所需的许多设置。仅docker-compose命令读取此文件;普通的docker run不会。
如果要使用普通的docker run命令运行此命令,则应执行以下两项操作:

  • command:中删除docker-compose.yml行;在您的CMD中添加相同的Dockerfile行。这使镜像具有可以运行的默认命令,而不必在每次运行命令时都指定它。
  • volumes:中删除docker-compose.yml;您已经在ADD中对应用程序进行了Dockerfile编码,因此您不想用主机中的随机内容覆盖它。

  • 这将使您拥有一个更简单的 docker-compose.yml文件
    version: "3"
    services:
    web:
    build: .
    image: my_web_app # (override the name Compose picks)
    ports:
    - "7000:8000"
    有了这个之后,您可以将其翻译成 docker run命令
    docker run \
    -d \
    -p 7000:8000 \ # ports:
    my_web_app # image:
    如果您还有其他选项( environment:volumes:,...),则需要将其转换为 docker run选项。如果需要在容器之间进行通信,请添加 Compose creates a default network for you并重新创建它。

    关于docker - 我如何在加载Docker容器后不运行docker-compose up的情况下运行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62917326/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com