diff --git a/README.md b/README.md index 56be882..6de1e08 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,11 @@ This repository is meant to support running Inventaire for testing and developme - [Requirements](#requirements) - [Install](#install) +- [Webserver](#webserver) - [Usage](#usage) - [Tips](#tips) - [Fixtures](#fixtures) - - [Tests](#tests) - - [Push git commits](#push-git-commits) - - [Rootless Docker](#rootless-docker) + - [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) @@ -34,6 +33,13 @@ git clone https://github.com/inventaire/docker-inventaire.git cd docker-inventaire ``` +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) ```sh @@ -49,36 +55,34 @@ docker-compose build Download Node dependencies and install the [client repository](https://github.com/inventaire/inventaire-client): ```sh -docker-compose run --rm inventaire npm install +cd inventaire +npm install tsx && npm install +cd .. ``` -Configure inventaire so that it can connect to CouchDB. For that, create a file `config/local.cjs` with the following command: +Configure inventaire so that it can connect to CouchDB. For that, create a file `config/local-production.cjs` with the following command: ```sh echo "module.exports = { db: { - username: 'yourcouchdbusername', - password: 'yourcouchdbpassword' + hostname: 'couchdb', + }, + elasticsearch: { + origin: 'http://elasticsearch:9200', } } -" > ./inventaire/config/local.cjs +" > ./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 -Start CouchDB, Elasticsearch, and the Inventaire [server](https://github.com/inventaire/inventaire) in development mode (modifications to the server files will reload the server), by default on port 3006 +Start CouchDB, Elasticsearch, and the Inventaire [server](https://github.com/inventaire/inventaire) in production mode ```sh docker-compose up ``` -To also work on the [client](https://github.com/inventaire/inventaire-client), you need to also start the webpack dev server: -```sh -cd inventaire/client -npm run watch -``` - ## Tips 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. @@ -87,10 +91,10 @@ General tips on how to run Inventaire can be found in the [server repository doc In case you would like to play with out-of-the-box data. -Run api tests to populate tests dbs (see Tests section) +Run API tests to populate tests dbs ```sh -docker-compose -f docker-compose.yml -f docker-compose.test.yml exec inventaire npm run test-api +docker-compose -f docker-compose.yml exec inventaire npm run test-api ``` - Replicate `*-tests` dbs documents into `*` dbs @@ -99,27 +103,9 @@ docker-compose -f docker-compose.yml -f docker-compose.test.yml exec inventaire `docker-compose exec inventaire npm run replicate-tests-db` ``` -### Tests +### Path autocomplete -Start services with test environnement with [multiple compose files](https://docs.docker.com/compose/extends/#understanding-multiple-compose-files) - -```sh -docker-compose -f docker-compose.yml -f docker-compose.test.yml up -``` - -Execute tests script - -```sh -docker-compose exec inventaire npm run test-api -``` - -or execute directly the test command - -```sh -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 +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 ```sh sudo ln ~/path/to/inventaire-docker/inventaire /opt -s @@ -132,45 +118,9 @@ mkdir /supervisor/path/to/inventaire ln -s /opt/ /supervisor/path/to/inventaire ``` -### Push git commits - -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`: -```sh -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 -``` - -### Rootless Docker - -Docker Engine v20.10 is now available in rootless mode. If you would like to try it, you may follow the [official guide](https://docs.docker.com/engine/security/rootless/) (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: - -```js -module.exports = { - protocol: 'http', - port: 3006, - host: 'inventaire', - db: { - username: 'couchdb', - password: 'password', - protocol: 'http', - hostname: 'couch' - }, - elasticsearch: { - host:'http://elasticsearch:9200' - } -} -``` - ### Run inventaire server and client outside of Docker -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 +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 @@ -192,11 +142,13 @@ npm run watch ## Troubleshooting ### Elasticsearch errors + - `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) ### Quieting CouchDB notice + 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: `curl -X PUT http://127.0.0.1:5984/_users`