Docker¶
The easiest way to get the project started is by using Docker Compose.
Prerequisites¶
Docker basics¶
Clone or download the code from Github in a folder like
drc
:$ git clone https://github.com/VNG-realisatie/documenten-api.git drc Cloning into 'drc'... ... $ cd drc
Start the database and web services:
$ docker-compose up web -d Starting drc_db_1 ... done Starting drc_web_1 ... done
This starts the web service and any services that it depends on.
It can take a while before everything is done. Even after starting the web container, the database might still be migrating. You can always check the status with:
$ docker logs -f drc_web_1
Create an admin user and load initial data. If different container names are shown above, use the container name ending with
_web_1
:$ docker exec -it drc_web_1 /app/src/manage.py createsuperuser Username: admin ... Superuser created successfully.
Point your browser to
http://localhost:8000/
to access the project’s management interface with the credentials used in step 3.If you are using
Docker Machine
, you need to point your browser to the Docker VM IP address. You can get the IP address by doingdocker-machine ls
and point your browser tohttp://<ip>:8000/
instead (where the<ip>
is shown below the URL column):$ docker-machine ls NAME ACTIVE DRIVER STATE URL default * virtualbox Running tcp://<ip>:<port>
To shutdown the services, use
docker-compose down
and to clean up your system you can rundocker system prune
.
More Docker¶
If you just want to run the project as a Docker container and connect to an
external database, you can build and run the Dockerfile
and pass several
environment variables. See src/drc/conf/docker.py
for
all settings.
$ docker build . && docker run \
-p 8000:8000 \
-e DJANGO_SETTINGS_MODULE=drc.conf.docker \
-e DB_USERNAME=... \
-e DB_PASSWORD=... \
-e DB_HOST=... \
--name drc
$ docker exec -it drc /app/src/manage.py createsuperuser
Loading initial data¶
The container will load any fixtures it can find at startup time. The default
location is /app/fixtures
, so you can mount a volume containing JSON
fixtures to populate your database initially.
You can override this location through the FIXTURES_DIR
environment
variable. Only *.json
files are considered.