gpt4 book ai didi

Docker 没有运行某些 RUN 指令?

转载 作者:行者123 更新时间:2023-12-02 19:24:06 24 4
gpt4 key购买 nike

我正在尝试运行 docker 容器来自动设置 sphinx 文档站点,但由于某种原因,当我尝试构建时出现以下错误

Step 9/11 : RUN make html
---> Running in abd76075d0a0
make: *** No rule to make target 'html'. Stop.

当我在其中运行容器和控制台时,我看到 sphinx-quickstart 似乎没有运行,因为/sphinx 中根本没有文件存在。不知道我做错了什么。 Dockerfile 如下。
  1 # Run this with                                                                                                                                                                                                
2 # docker build .
3 # docker run -dit -p 8000:8000 <image_id>
4 FROM ubuntu:latest
5
6 WORKDIR /sphinx
7 VOLUME /sphinx
8
9 RUN apt-get update -y
10 RUN apt-get install python3 python3-pip vim git -y
11
12 RUN pip3 install -U pip
13 RUN pip3 install sphinx
14
15 RUN sphinx-quickstart . --quiet --project devops --author 'Timothy Pulliam' -v '0.1' --language 'en' --makefile
16 RUN make html
17
18 EXPOSE 8000/tcp
19
20
21 CMD ["python3", "-m", "http.server"]

编辑:

使用 LinPy 的建议,我能够让它工作。奇怪的是,它不会以另一种方式工作。

最佳答案

Dockerfile VOLUME directive 大多只有令人困惑的副作用。除非您 100% 清楚它的作用以及您想要它的原因,否则您应该删除它。

特别是,令人困惑的副作用之一是写入卷目录的 RUN 命令会丢失。所以当你在第 7 行说 VOLUME /sphinx 时,第 15 行的 RUN sphinx-quickstart 尝试将其输出写入当前目录,这是一个声明的卷目录,因此输出内容不会持久化到图像中。

(将代码存储在卷中通常不合适;将其构建到镜像中以便以后可重用。您可以使用 docker run -v 将内容绑定(bind)到任何容器端目录,无论它是否被声明为 VOLUME 。)

关于Docker 没有运行某些 RUN 指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57573674/

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