Docker images for OpenLMIS
Docker enables container-based deployments on Linux based operating systems. This repository is an effort to build simple docker containers of the OpenLMIS project suitable for demos and development tasks.
These containers are not intended for production deployments.
The design of this repository uses:
- A base image built from
docker/base/
- OpenLMIS source code placed in
open-lmis/
- Optionally the OpenLMIS-Manager application placed in
open-lmis-manger/
Contains setup and run scripts, configuration files and Dockerfile for base image.
Dockerfile for base image build this first
Configuration files for included postgres.
Configuration files for included tomcat.
(Optional) Contains database snapshot that will be used when first launching instance.
OpenLMIS source code. This is added by you.
(Optional) OpenLMIS-Manager application source code. This is added by you.
- Docker (1.1+)
- Git (1.8+)
-
Build the OpenLMIS base image:
cd docker/base docker build -t "joshzamor/openlmis_base:latest" .
-
Add the Open-LMIS source code. This can either be copied into place or
git clone
. Note that building this image builds the OpenLMIS source code. This process requires Karma which requires Firefox to be available to run it's tests. You have 2 options around this: solve the headless Karma problem (please) or merge in this headless-build branch which disables Karma for headless builds.cd ../.. git clone https://github.com/OpenLMIS/open-lmis.git
-
Get OpenLMIS submodules.
cd open-lmis git submodule init git submodule update
-
(optional). Add in an initial DB snapshot. This adds in an initial database to use with OpenLMIS upon instance run. If ommited the standard clean OpenLMIS database will be used.
cp your-db-snapshot.dump db/open_lmis.custom
-
(optional). Get Open-LMIS-Manager. This simple manager application will add the URL
/open-lmis-manager
that allows anyone to reset the database. It's recommended that step 4, providing an initial db snapshot, be done if Open-LMIS-Manager is deployed.git clone https://github.com/joshzamor/open-lmis-manager.git
-
Build OpenLMIS container.
cd .. docker build -t "joshzamor/openlmis:latest" .
-
Run OpenLMIS container.
docker run -d -P --name your-name-here joshzamor/openlmis
Runs OpenLMIS with your-name-here
and will automatically expose the Postgres and Tomcat ports.
To determine the url to access the local instance of OpenLMIS from your browser you need to know the IP address of the local instance and the port number mapped to http.
To determine the ip address, at a non-docker command prompt.
boot2docker ip
To determine the port mapping at a command prompt within docker type.
docker ps
From a browser on your local machine you would access OpenLMIS with a URL like.
http://192.168.59.103:49154/
/var/logs
contains system logs
/home/openlmis
contains tomcat running OpenLMIS which includes Tomcat logs as well as OpenLMIS logs.
/open-lmis-db
contains open_lmis.custom
which is the database snapshot the Open-LMIS-Manager application uses to reset the database from.
docker run -d -P -v /var/logs -v /home/openlmis -v /your/host/path/to/db-snapshot/:/open-lmis-db --name openlmis-demo joshzamor/openlmis
This will run OpenLMIS, expose tomcat and postgres ports, allow another container to someday mount /var/logs
and /home/openlmis
to debug issues, mounts the hosts database snapshot at /your/host/path/to/db-snapshot/
to the containers /open-lmis-db
(make sure the hosts db snapshot is named open_lmis.custom
) and finally runs it with the name openlmis-demo
.
5432
is postgres which will allow all connections with a password.
it's not recommended to expose postgres to the public internet
8080
is Tomcat which runs http to OpenLMIS.
docker run -d -p 80:8080 -p 5432:5432 joshzamor/openlmis
This will run OpenLMIS and map your host's ports 80 to 8080 (tomcat) and 5432 to 5432 (postgres). However don't expose postgres (5432) to the public internet in this fashion. Ensure your firewall blocks access to postgres and if you need a DB connection through the public internet, use an SSH tunnel.