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

如何将docker-compose.yml翻译成Dockerfile

和柏
2023-03-14

我有一个用Django编写的应用程序,我正在尝试在Digital Ocean droplet上的docker中运行它。目前我有两个文件。

有人能建议如何摆脱docker compose吗。yml文件并集成Dockerfile中的所有命令???

文档文件

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY . /code/
RUN pip install -r reqirements.txt
RUN python /code/jk/manage.py collectstatic --noinput

docker编写。yml公司

version: '3'
services:
  web:
    build: .
    command: python jk/manage.py runserver 0.0.0.0:8081
    volumes:
      - .:/code
    ports:
      - "8081:8081"

我运行我的应用程序和docker映像,如下所示:

  • docker compose运行web python jk/manage。py迁移
  • <代码>docker compose up

输出:

Starting workspace_web_1 ...
Starting workspace_web_1 ... done
Attaching to workspace_web_1
web_1  | Performing system checks...
web_1  |
web_1  | System check identified no issues (0 silenced).
web_1  | December 02, 2017 - 09:20:51
web_1  | Django version 1.11.3, using settings 'jk.settings'
web_1  | Starting development server at http://0.0.0.0:8081/
web_1  | Quit the server with CONTROL-C.
...

好的,我采取了以下方法:Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY . /code/
RUN pip install -r reqirements.txt
RUN python /code/jk/manage.py collectstatic --noinput

然后我跑了:

 docker build -t "django:v1" .

所以docker images-a抛出:

docker images -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
django              v1                  b3dec6aaf9b9        5 minutes ago       949MB
<none>              <none>              55370397f7f2        5 minutes ago       948MB
<none>              <none>              e7eba7113203        7 minutes ago       693MB
<none>              <none>              dc3d7705c45a        7 minutes ago       691MB
<none>              <none>              12825382746d        7 minutes ago       691MB
<none>              <none>              2304087e8b82        7 minutes ago       691MB
python              3                   79e1dc9af1c1        3 weeks ago         691MB

最后我跑了:

cd /opt/workspace
docker run -d -v /opt/workspace:/code -p 8081:8081 django:v1 python jk/manage.py runserver 0.0.0.0:8081

两个简单的问题:

  1. 每个<代码>

以及@vmonteco的回复:

  1. 我想是的,但是减少图像大小的一种方法是通过对Dockerfile中的多个链式命令使用单个RUN指令来减少它们的数量。(RUN cmd1

共有1个答案

戚明朗
2023-03-14

太长别读

您可以将一些信息传递给docker文件(要运行的命令),但这并不等同于docker编写的所有文件。yml文件内容。

您可以替换docker compose。虽然yml文件中有命令行(docker compose正好取代了它)。

在您的情况下,可以将要运行的命令作为默认命令添加到Dockerfile中(这与将其传递给运行时启动的容器大致不同):

CMD ["python", "jk/manage.py", "runserver", "0.0.0.0:8081"]

或者直接在命令行中传递此命令,如卷和端口,它应该给出如下内容:

docker run -d -v .:/code -p 8081:8080 yourimage python jk/manage.py runserver 0.0.0.0:8081

但是

请记住,Dockerfiles和docker compose有两个完全不同的用途。

>

docker compose是一种启动和编排容器以构建应用程序的工具(您可以添加一些信息,如构建上下文路径或所需图像的名称,但不能添加Dockerfile内容本身)。

因此,要求“将docker-compose.yml文件转换为Dockerfile文件”实际上并不相关。

这是有关转换docker compose的更多信息。yml将文件放入一个(或多个)命令行中,手动启动容器。

docker-compose的目的正是为了摆脱这些命令行以使事情变得更简单(它使其自动化)。

也:

从manage.py留档:

请勿在生产设置中使用此服务器。它还没有经过安全审计或性能测试。(这就是它将保持的方式。

Django的runserver包含在管理中。py工具不适用于生产。

您可能需要考虑在代理后面使用WSGI服务器。

 类似资料:
  • 有人能把它翻译成python代码吗,例如,我知道第一行和第二行将是 我只是想不出其他的

  • 我使用thymeleaf生成一个包含一些javascript的页面。js是用thymeleaf生成的,目的是将java模型的某些部分放到我的页面中。 我知道如何使用thymeleaf将一些翻译成html。 但是现在我想把一些thymeleaf翻译成我生成的js,以便集中我的翻译工作。 理想情况下,我希望有一个变量,该变量将包含我翻译的所有消息。这个变量将在genrated js脚本中初始化。 有关

  • docker-compose.yml 启动一个 order 和 一个 peer 节点。 orderer: image: hyperledger/fabric-orderer environment: - ORDERER_GENERAL_LEDGERTYPE=ram - ORDERER_GENERAL_BATCHTIMEOUT=10s - ORDERER_GENERAL_BAT

  • docker-compose.yml 启动一个 5 个节点的服务,包括 zookeeper、fabric-order 和 3 个 kafka 节点。

  • 下面的groovy代码在脚本构建中运行良好。格拉德尔: 我不能成功地将它的语法翻译成kotlin build.gradle.kts。有人能给我正确的翻译吗?

  • 问题内容: 我有包含以下代码的python代码。 不幸的是,对python中的所有键进行循环并不能达到我的目的,因此我想将此代码转换为C 。对于以元组为键的python词典,最佳的C 数据结构是什么?以上代码的C ++等价物是什么? 我在boost库中查看了稀疏矩阵,但是找不到简单的方法来仅在非零元素上循环。 问题答案: 字典将是c ++中的std :: map,具有两个元素的元组将是std ::