make docker-compose.yml production ready

This commit is contained in:
jums
2025-02-23 08:41:04 +01:00
parent c3cc377149
commit 75fa3ffa18
5 changed files with 54 additions and 6 deletions

1
.gitignore vendored
View File

@@ -1,4 +1,5 @@
inventaire
.env
data
log
configs/docker.ini

12
Dockerfile.inventaire Executable file
View File

@@ -0,0 +1,12 @@
FROM node:20
RUN apt-get update \
&& apt-get install -y curl zsh git graphicsmagick inotify-tools jq \
&& apt-get clean
# Default to the same user as the host (override from command lin if needed)
# Known benefits:
# - allows to handle leveldb with level-party from both the host and container at the same time
USER 1000:1000
CMD ["npm", "run", "start"]

View File

@@ -1,6 +1,6 @@
Run [Inventaire](https://github.com/inventaire/inventaire) in Docker
This repository is meant to support running Inventaire for testing and development. For production, see [inventaire-deploy](https://github.com/inventaire/inventaire-deploy).
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

View File

@@ -1,15 +1,36 @@
version: '3'
services:
inventaire:
build:
context: ./.
dockerfile: Dockerfile.inventaire
ports:
- "3006:3006"
volumes:
- ./inventaire:${PROJECT_ROOT}
working_dir: ${PROJECT_ROOT}
environment:
NODE_ENV: 'production'
COUCHDB_USER: ${COUCHDB_USER}
COUCHDB_PASSWORD: ${COUCHDB_PASSWORD}
PUBLIC_HOSTNAME: ${PUBLIC_HOSTNAME}
depends_on:
- elasticsearch
tty: true
logging:
options:
max-size: "10m"
max-file: "3"
couchdb:
image: couchdb:3.4.2
ports:
- "5984:5984"
environment:
COUCHDB_USER: "yourcouchdbusername"
COUCHDB_PASSWORD: "yourcouchdbpassword"
volumes:
- 'couchdb:/opt/couchdb/data'
- './configs:/opt/couchdb/etc/local.d'
environment:
COUCHDB_USER: ${COUCHDB_USER}
COUCHDB_PASSWORD: ${COUCHDB_PASSWORD}
tty: true
elasticsearch:
image: elasticsearch:7.16.2
@@ -18,11 +39,13 @@ services:
- 'transport.host=127.0.0.1'
# See https://www.elastic.co/guide/en/elasticsearch/reference/7.16/docker.html
- 'discovery.type=single-node'
# Limit memory usage to 1Go,
# See https://www.elastic.co/guide/en/elasticsearch/reference/current/advanced-configuration.html
- 'ES_JAVA_OPTS=-Xms1g -Xmx1g'
volumes:
- 'elasticsearch:/usr/share/elasticsearch/data'
ports :
- '127.0.0.1:9200:9200'
- '9200:9200'
volumes:
couchdb:
elasticsearch:
elasticsearch:

12
dotenv Normal file
View File

@@ -0,0 +1,12 @@
# Your website domain name
PUBLIC_HOSTNAME=an-inventaire-site.org
# Root path within docker container
PROJECT_ROOT=/opt/inventaire
# Generic user, to modify only for good reason
COUCHDB_USER=couchdb
# Consider passwords with no less than 32 charracters, for example:
# cat /dev/urandom | tr -dc A-Za-z0-9-_ | head -c 32
COUCHDB_PASSWORD=your_password