Files
docker-inventaire/README.md

155 lines
4.4 KiB
Markdown
Raw Normal View History

Run [Inventaire](https://github.com/inventaire/inventaire) in Docker
This repository is packaging Inventaire for Docker production environement. To run it for production outside Docker, see [inventaire-deploy](https://github.com/inventaire/inventaire-deploy).
## Summary
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
- [Requirements](#requirements)
- [Install](#install)
2025-02-23 08:40:05 +01:00
- [Webserver](#webserver)
- [Usage](#usage)
- [Tips](#tips)
- [Fixtures](#fixtures)
2025-02-23 08:40:05 +01:00
- [Path autocomplete](#path-autocomplete)
- [Run inventaire server and client outside of Docker](#run-inventaire-server-and-client-outside-of-docker)
- [Troubleshooting](#troubleshooting)
- [Elasticsearch errors](#elasticsearch-errors)
- [Quieting CouchDB notice](#quieting-couchdb-notice)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
2018-06-07 14:16:50 +02:00
## Requirements
- [docker-compose](https://docs.docker.com/compose/gettingstarted/) up and ready
- git
2018-06-07 14:16:50 +02:00
## Install
2021-08-25 15:37:10 +02:00
```sh
2021-02-09 16:03:13 +01:00
git clone https://github.com/inventaire/docker-inventaire.git
cd docker-inventaire
```
2025-02-23 08:40:05 +01:00
Rename `dotenv` file to `.env`, and customize the variables (mainly adding the domain name, and a couchdb password):
```sh
cp dotenv .env
vim .env
```
Clone `inventaire` core application [server](https://github.com/inventaire/inventaire)
2021-08-25 15:37:10 +02:00
```sh
git clone https://github.com/inventaire/inventaire.git
```
Build
2021-08-25 15:37:10 +02:00
```sh
docker-compose build
```
Download Node dependencies and install the [client repository](https://github.com/inventaire/inventaire-client):
2021-08-25 15:37:10 +02:00
```sh
2025-02-23 08:40:05 +01:00
cd inventaire
npm install tsx && npm install
cd ..
```
2025-02-23 08:40:05 +01:00
Configure inventaire so that it can connect to CouchDB. For that, create a file `config/local-production.cjs` with the following command:
2021-08-25 15:37:10 +02:00
```sh
2020-02-20 18:31:41 +01:00
echo "module.exports = {
db: {
2025-02-23 08:40:05 +01:00
hostname: 'couchdb',
},
elasticsearch: {
origin: 'http://elasticsearch:9200',
2020-02-20 18:31:41 +01:00
}
}
2025-02-23 08:40:05 +01:00
" > ./inventaire/config/local-production.cjs
```
NB: Those username and password should match the `COUCHDB_USER` and `COUCHDB_PASSWORD` environment variables set in `docker-compose.yml`
## Usage
2025-02-23 08:40:05 +01:00
Start CouchDB, Elasticsearch, and the Inventaire [server](https://github.com/inventaire/inventaire) in production mode
2021-08-25 15:37:10 +02:00
```sh
docker-compose up
```
## Tips
2023-11-30 15:56:49 +01:00
General tips on how to run Inventaire can be found in the [server repository docs](https://github.com/inventaire/inventaire/tree/main/docs). Here after are some additional Docker-specific tips.
### Fixtures
In case you would like to play with out-of-the-box data.
2025-02-23 08:40:05 +01:00
Run API tests to populate tests dbs
2020-02-20 18:31:41 +01:00
2021-08-25 15:37:10 +02:00
```sh
2025-02-23 08:40:05 +01:00
docker-compose -f docker-compose.yml exec inventaire npm run test-api
```
- Replicate `*-tests` dbs documents into `*` dbs
2021-08-25 15:37:10 +02:00
```sh
`docker-compose exec inventaire npm run replicate-tests-db`
```
2025-02-23 08:40:05 +01:00
### Path autocomplete
2025-02-23 08:40:05 +01:00
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
2021-08-25 15:37:10 +02:00
```sh
sudo ln ~/path/to/inventaire-docker/inventaire /opt -s
```
2020-11-28 16:27:52 +01:00
Alternatively, as root in inventaire container:
2020-09-21 17:21:15 +02:00
2021-08-25 15:37:10 +02:00
```sh
mkdir /supervisor/path/to/inventaire
ln -s /opt/ /supervisor/path/to/inventaire
```
2020-09-21 17:21:15 +02:00
### Run inventaire server and client outside of Docker
2025-02-23 08:40:05 +01:00
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](https://nodejs.org/) >= v16 installed on your machine, which should make both `node` and `npm` executables accessible in your terminal
Then you can start CouchDB and Elasticsearch in the background
```sh
docker-compose up couchdb elasticsearch -d
```
Start the Inventaire server in development mode
```sh
cd inventaire
npm run watch
```
And in another terminal, start the client Webpack dev server
```sh
cd inventaire/client
npm run watch
```
## Troubleshooting
2021-02-09 16:03:13 +01:00
### Elasticsearch errors
2025-02-23 08:40:05 +01:00
2021-02-09 16:03:13 +01:00
- `max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]`: fix by running the command `sudo sysctl -w vm.max_map_count=262144` on your host machine
See also [Elasticsearch with Docker](https://www.elastic.co/guide/en/elasticsearch/reference/7.9/docker.html)
2021-08-25 15:37:10 +02:00
### Quieting CouchDB notice
2025-02-23 08:40:05 +01:00
2021-08-25 15:37:10 +02:00
CouchDB may warn constantly that `_users` database does not exist, [as documented](https://docs.couchdb.org/en/latest/setup/single-node.html), you can create de database with:
2021-02-09 16:03:13 +01:00
`curl -X PUT http://127.0.0.1:5984/_users`