You can run everything in one container, but the recommended setup is to split Koha in three/four parts:
- Koha container
- Mysql server (Official docker mysql image)
- Mysql data (Named Data Volume)
- Index data (Named Data Volume, if you want persistent search inside koha).
Koha container
- The running Koha code, including plack, REST API, SIP server and Zebra indexer.
- Using-the-Koha-Docker-image#supervisord
- Connects to mysql server either via docker network or link to mysql server container.
Mysql server
- Standard mysql server, optionally exposed to host at port 3306
- Mounts Mysql Data Volume
Mysql data
- A Docker Named Volume, meaning an isolated file/folder structure that can be mounted anywhere.
- Typically mounted when starting mysql server :
docker run -d -v "koha_mysql_data:/var/lib/mysql" mysql:5.6.20
Koha index data
- Same as above, typically mounted when starting koha container
docker run -d -v "koha_index:/var/lib/koha/myKoha" digibib/koha:<GITREF>