代码之家  ›  专栏  ›  技术社区  ›  Timothy Pulliam

Docker没有运行某些运行指令?

  •  1
  • Timothy Pulliam  · 技术社区  · 6 年前

    我试图运行一个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"]
    

    编辑:

    根据林皮的建议,我可以让它发挥作用。奇怪的是,它不会以另一种方式工作。

    2 回复  |  直到 6 年前
        1
  •  1
  •   LinPy    6 年前

    因此,您需要将这些设置为一行:

    RUN sphinx-quickstart . --quiet --project devops --author 'Timothy Pulliam' -v '0.1' --language 'en' --makefile && make html
    

    我想您可以在日志中看到,删除中间容器以获取规则 html 已经不在了吗

        2
  •  0
  •   David Maze    6 年前

    这个 Dockerfile VOLUME directive 大多数情况下只有令人困惑的副作用。除非你对它的作用和你想要它的原因一目了然,否则你应该删除它。

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

    (将代码存储在卷中通常是不合适的;将其构建到映像中,以便稍后可以重用。你可以用 docker run -v 在任何容器端目录上绑定装载内容,而不管其是否声明为 体积 )

        3
  •  -1
  •   Dom    6 年前

    你已经通过Linpy的帮助性评论解决了这个问题,但是为了增加更多内容,用你的错误信息做一个快速的谷歌搜索,就会得到这个stackoverflow帖子…… gcc makefile error: "No rule to make target ..."

    也许您无意中调用了另一个命令(在本例中是gcc命令),而不是sphinx提供的.bat文件。

    希望这能让我们更清楚地了解事情发生的原因。我假设您使用的Ubuntu父映像已经预先安装了gcc。

    推荐文章