在Docker容器中构建sphinx文档

时间:2017-04-28 15:12:59

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

我有一个在Docker容器内运行的Flask项目。我已经设法构建我的应用程序并成功运行它。但是,我还想构建sphinx文档,因此可以提供其静态文件。该文档通常使用make html文件中的docs/构建。我找到了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文档?我是否需要将另一个Dockerconfig文件添加到docs模块?

2 个答案:

答案 0 :(得分:0)

  

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

为了测试这个理论,你能尝试类似这个命令吗?

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

或可能

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

答案 1 :(得分:0)

我通过以下方法成功构建和部署了我的 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

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