Run Inventaire in Docker
This repository is meant to support running Inventaire for testing and development. For production, see inventaire-deploy.
- docker-compose up and ready
- git
git clone https://github.com/inventaire/docker-inventaire.git
cd docker-inventaire
Clone inventaire
core application server
git clone https://github.com/inventaire/inventaire.git
Build
docker-compose build
Download Node dependencies and install the client repository:
docker-compose run --rm inventaire npm install
Configure inventaire so that it can connect to CouchDB. For that, create a file config/local.cjs
with the following command:
echo "module.exports = {
db: {
username: 'yourcouchdbusername',
password: 'yourcouchdbpassword'
}
}
" > ./inventaire/config/local.cjs
NB: Those username and password should match the COUCHDB_USER
and COUCHDB_PASSWORD
environment variables set in docker-compose.yml
Start CouchDB, Elasticsearch, and the Inventaire server in development mode (modifications to the server files will reload the server), by default on port 3006
docker-compose up
To also work on the client, you need to also start the webpack dev server:
cd inventaire/client
npm run watch
General tips on how to run Inventaire can be found in the server repository docs. Here after are some additional Docker-specific tips.
In case you would like to play with out-of-the-box data.
Run api tests to populate tests dbs (see Tests section)
docker-compose -f docker-compose.yml -f docker-compose.test.yml exec inventaire npm run test-api
- Replicate
*-tests
dbs documents into*
dbs
`docker-compose exec inventaire npm run replicate-tests-db`
Start services with test environnement with multiple compose files
docker-compose -f docker-compose.yml -f docker-compose.test.yml up
Execute tests script
docker-compose exec inventaire npm run test-api
or execute directly the test command
docker-compose exec inventaire npm test /opt/inventaire/path/to/test/file
Tip : create a symbolic link on your machine between the inventaire folder and docker working directory on your machine at /opt/
, in order to autocomplete path to test file to execute
sudo ln ~/path/to/inventaire-docker/inventaire /opt -s
Alternatively, as root in inventaire container:
mkdir /supervisor/path/to/inventaire
ln -s /opt/ /supervisor/path/to/inventaire
To keep things simple, this installation steps above clone repositories in https, but if you want to push to a branch with ssh, you will probably need to change the repositories origin
:
cd inventaire
git remote set-url origin git@github.com:inventaire/inventaire.git
cd client
git remote set-url origin git@github.com:inventaire/inventaire-client.git
Docker Engine v20.10 is now available in rootless mode. If you would like to try it, you may follow the official guide (including command export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock
).
Start the inventaire install steps above, before installing dependencies, make sure that the owner of inventaire folder is the same as the owner inside the container.
Delete network_host
occurences from docker-compose.yml
and adapt the config/local.cjs
in consequence:
module.exports = {
protocol: 'http',
port: 3006,
host: 'inventaire',
db: {
username: 'couchdb',
password: 'password',
protocol: 'http',
hostname: 'couch'
},
elasticsearch: {
host:'http://elasticsearch:9200'
}
}
It can sometimes be more convenient to keep CouchDB and Elasticsearch in Docker, but to run the Inventaire server and client outside. For this you will need to:
- have NodeJS >= v16 installed on your machine, which should make both
node
andnpm
executables accessible in your terminal
Then you can start CouchDB and Elasticsearch in the background
docker-compose up couchdb elasticsearch -d
Start the Inventaire server in development mode
cd inventaire
npm run watch
And in another terminal, start the client Webpack dev server
cd inventaire/client
npm run watch
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
: fix by running the commandsudo sysctl -w vm.max_map_count=262144
on your host machine
See also Elasticsearch with Docker
CouchDB may warn constantly that _users
database does not exist, as documented, you can create de database with:
curl -X PUT http://127.0.0.1:5984/_users