This guide is valid for the installation of the new openIMIS version together with the REST API component. 0. PrerequisiteTo install openIMIS using Docker, you first need first to install Docker Desktop. Please on your computer/server. Please visit https://docs.docker.com/get-docker/ website to download and install the Docker platform from the Docker Desktop website. Make sure to use Windows container (Docker image operating system "windows" cannot be used on this platform).version that matches your OS. 1. Download openIMIS Docker scriptDownload and unzip the release from Github Clone the openimis-dist_dkr repository on your machine into a new folder. 2. First startupThe first startup is special since it will create the necessary docker images and containers to run openIMIS. To build necessary, docker images, docker-compose relies on local docker files. In order to build these images, you need to clone, next to openimis-dist_dkr/ the following Github repository: Or clone the 5 folders with git: Code Block |
---|
git clone https://github.com/openimis/openimis-dist_dkr.git
git clone https://github.com/openimis/openimis-db_dkr.git
git clone https://github.com/openimis/openimis-be_py.git
git clone https://github.com/openimis/openimis-fe_js.git
git clone https://github.com/openimis/openimis-gateway_dkr.git |
From within openimis-dist_dkr/windows directory: Code Block |
---|
| DB_SQL_SCRIPT=<URL pointing to the SQL script>
ACCEPT_EULA=<must put Y but it means you accept Microsoft EULA for the MSSQL database container>
DB_HOST=database
DB_PORT=1433
DB_NAME=<your database name, imis if you use the demo docker 'db' service>
DB_USER=<your database user, sa if you use the demo docker 'db' service >
DB_PASSWORD=<your database password, generate one if you use the demo docker 'db' service>
NEW_OPENIMIS_HOST=<(sub)domain under which the (new) openIMIS will be served (e.g. openimis.domaine) >
LEGACY_OPENIMIS_HOST=frontend |
on the same level as openimis-dist_dkr directory, create a new conf directory (this is used for storing instance-specific configuration that will be reused if the docker containers are restarted) if you use the demo docker 'db' service (not for production!): choose the SQL script to create/restore the database in DB_SQL_SCRIPT . Reference models are provided in the database installation tutorial. Example: Empty database: https://raw.githubusercontent.com/openimis/database_ms_sqlserver/v1.4.2/Empty%20databases/openIMIS_ONLINE.sql Demo database: https://raw.githubusercontent.com/openimis/database_ms_sqlserver/v1.4.2/Demo%20database/openIMIS_demo_ONLINE.sql
accept the Microsoft EULA for the MSSQL database container (set the value of ACCEPT_EULA to Y ) build and start the database docker image: docker-compose up db create the openIMIS database into the container: create the database user
build and start the gateway, frontend and backend docker image: docker-compose up (note: at each start, openIMIS will apply the necessary database migrations to update the database scheme) If connecting to a brand new database, register your openIMIS superuser: list running containers and spot the backend: docker container ls (the gateway should be named openimis-backend ) connect to the gateway: docker exec -it <CONTAINER ID> /bin/bash (bash and not sh this time) you should be in /openimis-be/openIMIS directory, if not, just cd /openimis-be/openIMIS ) register your openIMIS superuser: python manage.py createsuperuser (and follow instructions)
Updating the certificates of the frontend is required for production usage openimis-gateway_dkr/certs/ . Using the docker database is not advised for production. This docker-compose doesn’t use REDIS and Celery. If multi-backend is required, please check the docker-compose in the openimis-dist_dkr directory or create a ticket. To add a new backend user, you must edit the /conf/.htpasswd in the gateway container (scripts will be written later).
stop/startCreate the .env file from the .env.example and configure the environment variables according to the comments in the file. By default, PostgreSQL database is used. then run those command in that order to make sure the coreMIS part is properly configured Code Block |
---|
docker compose up -d db
#wait for the db to be initialised
sleep 180
#load the .env file in your shell to have the access to the env variables
source .env
source .env.lightning
# create the lightning database
docker compose run -e PGPASSWORD=${POSTGRES_PASSWORD} --rm db createdb -h db -U ${POSTGRES_USER} ${POSTGRES_DB}
set -e
# init lighning
docker compose run --rm web mix ecto.migrate
docker compose run --rm web mix run imisSetupScripts/imisSetup.exs
#start all modules
docker compose up -d
#load opensearch dashbaord
docker compose run --rm -e MODE=DEV backend manage upload_opensearch_dashboards --host-domain https://demo.openimis.org --imis-password admin123 |
3. SSL certificate / httpsthere is a docker-compose that support let’s encrypt certificates first export NEW_OPENIMIS_HOST , dry run docker-compose run --rm --entrypoint " certbot certonly --webroot -w /var/www/certbot --staging --register-unsafely-without-email -d ${NEW_OPENIMIS_HOST} --rsa-key-size 2048 --agree-tos --force-renewal" certbot actual setupdocker-compose run --rm --entrypoint " certbot certonly --webroot -w /var/www/certbot --register-unsafely-without-email -d ${NEW_OPENIMIS_HOST} --rsa-key-size 2048 --agree-tos --force-renewal" certbot 4. ActionsFrom within openimis-dist_dkr/windows directory: To stop all docker containers: docker-compose stop To (re-)start all docker containers: docker-compose start To pull new images or images update `docker-compose pull`
|