【问题标题】:Building sphinx documents inside Docker container在 Docker 容器中构建 sphinx 文档
【发布时间】:2017-09-26 18:27:37
【问题描述】:

我有一个在 Docker 容器中运行的 Flask 项目。我已经设法构建我的应用程序并成功运行它。但是,我还想构建 sphinx 文档,以便可以提供其静态文件。该文档通常使用docs/ 文件中的make html 构建。我找到了 sphinx 的 docker 源,并设置了一个成功运行的 docker-compose 配置,但是,我无法将 make html 命令传递给 sphinx - 我相信因为我正在运行该命令一个级别向上,因为make html 需要在docs/ 中运行,而不是在基目录中。

我在尝试构建 sphinx 文档时收到以下错误:

docker-compose run --rm sphinx make html
Starting web_project
Pulling sphinx (nickjer/docker-sphinx:latest)...
latest: Pulling from nickjer/docker-sphinx
c62795f78da9: Pull complete
d4fceeeb758e: Pull complete
5c9125a401ae: Pull complete
0062f774e994: Pull complete
6b33fd031fac: Pull complete
aac5b231ab1e: Pull complete
97be0ae484bc: Pull complete
ec7c8cca5e46: Pull complete
82cc981959eb: Pull complete
151a33a826a1: Pull complete
Digest: sha256:8125ca919069235278a5da631c002926cc57d741fa041b59c758183ebd48121f
Status: Downloaded newer image for nickjer/docker-sphinx:latest
make: *** No rule to make target 'html'.  Stop.

我的项目有以下目录结构

docs/
web/
    Dockerfile
    run.py
    requirements.txt
    ....
docker-compose.yml
README.md

以及下面的docker-compose配置

version: '2'

services:
    web:
        restart: always
        build: ./web
        ports:
            - "7000:7000"
        environment:
            DEBUG: 'true'
        command: /usr/local/bin/gunicorn -w 2 -b :7000 run:app

    sphinx:
        image: "nickjer/docker-sphinx"
        volumes:
            - "${PWD}:/docs"
        user: "1000:1000"
        depends_on:
            - web

如何在 Docker 容器中构建我的 sphinx 文档?我需要向我的docs 模块添加另一个 Dockerconfig 文件吗?

【问题讨论】:

    标签: python-3.x docker docker-compose dockerfile python-sphinx


    【解决方案1】:

    我相信,因为我正在运行命令,因为 make html 需要从 docs/ 内部运行,而不是从基础内部运行 目录。

    要测试这个理论,你能试试这个命令吗?

    docker-compose run --rm sphinx bash -c "cd docs; make html"

    或者可能

    docker-compose exec sphinx bash -c "cd docs; make html"

    【讨论】:

    • 嗯,看起来我的假设不正确——当我运行第一个 docker-compose 命令时,我得到以下信息:bash: line 0: cd: docs: No such file or directory make: *** No rule to make target 'html'. Stop.。所以我猜我实际上在 /docs ?不知道为什么我不能 make 我的目标在 docker 容器中,但是,当相同的 make html 命令在没有 docker 的情况下工作时。关于解决 docker 容器故障的其他方法有什么想法吗?谢谢!
    • 我也得到了相同的结果:No rule to make target 'html'. Stop. 看起来可能是缺少一些配置?
    【解决方案2】:

    我成功地构建和部署了我的 sphinx 文档以供 Flask 应用程序静态读取。

    WORKDIR /pathapp/app
    ENV PYTHON /pathapp/app
    RUN python  /pathapp/app/setup.py build_sphinx -b html
    RUN python /pathapp/app/scripts/script_to_copy_build_sphinx_html_to_docs.py
    

    移动脚本只是一个简单的复制目录。

    【讨论】:

      猜你喜欢
      • 2011-07-16
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多