docker-pypiserver

pypiserver in a box

with additions from Fred Thiele ferdy_news@gmx.de

Quick start

Launch the server

mkdir -p /tmp/pypi/packages
docker run -p 8080:8080 -v /tmp/pypi/packages:/data/packages jcsaaddupuy/pypiserver

Default config

The image comes with a default account :

  • login : admin
  • password : password

Configure setup tools

In ~/.pypirc, add the following content :

[distutils]
index-servers =
  internal

  [internal]
  repository: http://127.0.0.1:8080
  username: admin
  password: password

Upload your first package

python setup.py sdist upload -r internal

You can now browse to http://localhost:8080/simple to browse availables packages

Advanced usage

The image starts with pypi-server as main entry point, configured to use the .htaccess (see Dockerfile for details). You can pass any pypi-server option when running the container.

See schmir/pypiserver for all availables options.

Enable package overwriting

Simply pass the -o option :

docker run -p 8080:8080 -v /tmp/pypi/packages:/data/packages jcsaaddupuy/pypiserver -o

Use custom accounts

First, generate a custom .htaccess file :

htpasswd -sc /path/to/config/.htaccess account_name

Then, start the container with the folder containing the config mounted as /home/pypiserver/config :

docker run -p 8080:8080 -v /tmp/pypi/packages:/data/packages -v /path/to/config:/config jcsaaddupuy/pypiserver

Use with tox

in tox.ini, add your server in the indexserver section :

[tox]
indexserver =
    default = https://pypi.python.org/simple
    DEV = http://127.0.0.1:8080/simple

You can then use your own server pypi server to install dependancies, by prefixing the modulename with the alias given in indexserver (in our case, :DEV:) :

[testenv]
deps= :DEV:your_awesome_module