Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/devilbox/docker-python-sphinx


https://github.com/devilbox/docker-python-sphinx

Last synced: 3 days ago
JSON representation

Awesome Lists containing this project

README

        

# Python Sphinx Docker image

[![Tag](https://img.shields.io/github/tag/devilbox/docker-python-sphinx.svg)](https://github.com/devilbox/docker-python-sphinx/releases)
[![Gitter](https://badges.gitter.im/devilbox/Lobby.svg)](https://gitter.im/devilbox/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![Discourse](https://img.shields.io/discourse/https/devilbox.discourse.group/status.svg?colorB=%234CB697)](https://devilbox.discourse.group)
[![type](https://img.shields.io/badge/type-Docker-blue.svg)](https://hub.docker.com/r/devilbox/python-sphinx)
[![License](https://img.shields.io/badge/license-MIT-%233DA639.svg)](https://opensource.org/licenses/MIT)

[![lint](https://github.com/devilbox/docker-python-sphinx/workflows/lint/badge.svg)](https://github.com/devilbox/docker-python-sphinx/actions?query=workflow%3Alint)
[![build](https://github.com/devilbox/docker-python-sphinx/workflows/build/badge.svg)](https://github.com/devilbox/docker-python-sphinx/actions?query=workflow%3Abuild)
[![nightly](https://github.com/devilbox/docker-python-sphinx/workflows/nightly/badge.svg)](https://github.com/devilbox/docker-python-sphinx/actions?query=workflow%3Anightly)

This project provides a Python Sphinx Docker image for development purposes.

View **[Dockerfile](https://github.com/devilbox/docker-python-sphinx/blob/master/Dockerfile)** on GitHub.

| Docker Hub | Upstream Project |
|------------|------------------|
| | |

#### Documentation

In case you seek help, go and visit the community pages.



Documentation


Chat


Forum























devilbox.readthedocs.io
gitter.im/devilbox
devilbox.discourse.group

## Docker image tags

* **Image name:** `devilbox/python-sphinx`

### Rolling tags

Rolling tags are updated and pushed nightly to ensure latest patch-level Python version.

| Image tag | Python version |
|-----------|----------------|
| `3.9-dev` | Latest 3.9.x |
| `3.8-dev` | Latest 3.8.x |
| `3.7-dev` | Latest 3.7.x |
| `3.6-dev` | Latest 3.6.x |
| `3.5-dev` | Latest 3.5.x |
| `2.7-dev` | Latest 2.7.x |

### Release tags

Release tags are fixed and bound to git tags.

| Image Tag | Python version |
|---------------------|----------------|
| `3.9-dev-` | Latest 3.9.x |
| `3.8-dev-` | Latest 3.8.x |
| `3.7-dev-` | Latest 3.7.x |
| `3.6-dev-` | Latest 3.6.x |
| `3.5-dev-` | Latest 3.5.x |
| `2.7-dev-` | Latest 2.7.x |

## Example

For easy usage, there is a Docker Compose example project included.
```bash
cp .env.example .env
docker-compose up
```
```bash
curl localhost:8000
```

## Environment Variables

| Variable | Required | Default | Description |
|--------------------|----------|---------------|-------------|
| `SPHINX_PROJECT` | | `.` | The sub-directory name under `/shared/httpd/` to serve [1] |
| `SPHINX_BUILD_DIR` | | `_build/html` | The relative build sub-directory path under `SPHINX_PROJECT_DIR` |
| `SPHINX_PORT` | | `8000` | Docker container internal http port to serve the application |
| `NEW_UID` | | `1000` | User id of the host system to ensure syncronized permissions between host and container |
| `NEW_GID` | | `1000` | Group id of the host system to ensure syncronized permissions between host and container |

* [1] See [Project directory structure](#project-directory-structure) for usage

## Project directory structure

The following shows how to organize your project on the host operating system.

### Basic structure

The following is the least required directory structure:
```bash
/
├── index.rst # Sphinx index file
└── conf.py # Sphinx configuration file
```

After you've started the container the structure will look like
```bash
/
├── _build
│   └── html
├── index.rst
└── conf.py
```

### Structure with dependencies

The following directory structure allows for auto-installing Python dependencies during startup into a virtual env.
```bash
/
├── index.rst # Sphinx index file
├── conf.py # Sphinx configuration file
└── requirements.txt # Optional: will pip install in virtual env
```

After you've started the container with a `requirements.txt` in place, a new `venv/` directory will be added with you Python virtual env.
```bash
/
├── index.rst # Sphinx index file
├── conf.py # Sphinx configuration file
├── requirements.txt
└── venv
├── bin
├── include
└── lib
```

### Mounting your project

When using this image, you need to mount your project directory into `/shared/httpd/` into the container:
```bash
docker run \
--rm \
-v $(pwd)/:/shared/httpd/ \
devilbox/python-sphinx:3.9-dev
```

If your local uid or gid are not 1000, you should set them accordingly via env vars to ensure to syncronize file system permissions across the container and your host system.
```bash
docker run \
--rm \
-v $(pwd)/:/shared/httpd/ \
-e NEW_UID=$(id -u) \
-e NEW_GID=$(id -g) \
devilbox/python-sphinx:3.9-dev
```

## Build locally
```bash
# Build default version (Python 3.8)
make build

# Build specific version
make build PYTHON=3.7
```

## Test locally
```bash
# Test default version (Python 3.8)
make test

# Test specific version
make test PYTHON=3.7
```

## License

**[MIT License](LICENSE)**

Copyright (c) 2019 [cytopia](https://github.com/cytopia)