docker-compose.yml: use a pre-build inventaire image and env_file=.env
and customize CouchDB entrypoint script to fix the issue of the missing _users database
This commit is contained in:
0
Dockerfile.inventaire
Executable file → Normal file
0
Dockerfile.inventaire
Executable file → Normal file
14
couchdb/Dockerfile.couchdb
Normal file
14
couchdb/Dockerfile.couchdb
Normal file
@@ -0,0 +1,14 @@
|
||||
FROM couchdb:3.4.2
|
||||
|
||||
COPY docker-custom-entrypoint.sh /usr/local/bin/docker-custom-entrypoint.sh
|
||||
COPY init_users_db.sh /usr/local/bin/init_users_db.sh
|
||||
|
||||
ENTRYPOINT ["tini", "--", "/usr/local/bin/docker-custom-entrypoint.sh"]
|
||||
|
||||
EXPOSE 5984
|
||||
|
||||
# Copied from the couchdb image Dockerfile
|
||||
# https://github.com/apache/couchdb-docker/blob/734c61f/3.4.2/Dockerfile#L104
|
||||
# as it would have been otherwise reset to an empty string
|
||||
# See https://docs.docker.com/reference/dockerfile/#understand-how-cmd-and-entrypoint-interact
|
||||
CMD ["/opt/couchdb/bin/couchdb"]
|
||||
3
couchdb/docker-custom-entrypoint.sh
Executable file
3
couchdb/docker-custom-entrypoint.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
/usr/local/bin/init_users_db.sh &
|
||||
tini -- /docker-entrypoint.sh "$@"
|
||||
12
couchdb/init_users_db.sh
Executable file
12
couchdb/init_users_db.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
while :; do {
|
||||
echo "[init_users_db.sh] Waiting for CouchDB to be online to initialize the _users database"
|
||||
curl http://localhost:5984 && {
|
||||
echo "[init_users_db.sh] CouchDB is online! Trying to initialize _users database"
|
||||
curl --user "$COUCHDB_USER:$COUCHDB_PASSWORD" -XPUT http://localhost:5984/_users
|
||||
break
|
||||
} || {
|
||||
sleep 1
|
||||
}
|
||||
}; done
|
||||
@@ -1,31 +1,23 @@
|
||||
version: '3'
|
||||
services:
|
||||
inventaire:
|
||||
build:
|
||||
context: ./.
|
||||
dockerfile: Dockerfile.inventaire
|
||||
image: inventaire:latest
|
||||
volumes:
|
||||
- ./inventaire:${PROJECT_ROOT}
|
||||
working_dir: ${PROJECT_ROOT}
|
||||
environment:
|
||||
NODE_ENV: 'production'
|
||||
NODE_APP_INSTANCE: 'federated'
|
||||
COUCHDB_USER: ${COUCHDB_USER}
|
||||
COUCHDB_PASSWORD: ${COUCHDB_PASSWORD}
|
||||
PUBLIC_HOSTNAME: ${PUBLIC_HOSTNAME}
|
||||
- ./inventaire:/opt/inventaire
|
||||
env_file: .env
|
||||
depends_on:
|
||||
- couchdb
|
||||
- elasticsearch
|
||||
tty: true
|
||||
logging:
|
||||
options:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
restart: "always"
|
||||
restart: unless-stopped
|
||||
couchdb:
|
||||
image: couchdb:3.4.2
|
||||
environment:
|
||||
COUCHDB_USER: ${COUCHDB_USER}
|
||||
COUCHDB_PASSWORD: ${COUCHDB_PASSWORD}
|
||||
build:
|
||||
context: ./couchdb
|
||||
dockerfile: Dockerfile.couchdb
|
||||
env_file: .env
|
||||
# Uncomment ports to get access to the db
|
||||
# ie. for database transformation, querying, UI access (http://localhost:5984/_utils/)
|
||||
# ports:
|
||||
@@ -34,7 +26,7 @@ services:
|
||||
- 'couchdb:/opt/couchdb/data'
|
||||
- './configs:/opt/couchdb/etc/local.d'
|
||||
tty: true
|
||||
restart: "always"
|
||||
restart: unless-stopped
|
||||
elasticsearch:
|
||||
image: elasticsearch:7.16.2
|
||||
environment:
|
||||
@@ -47,7 +39,7 @@ services:
|
||||
- 'ES_JAVA_OPTS=-Xms1g -Xmx1g'
|
||||
volumes:
|
||||
- 'elasticsearch:/usr/share/elasticsearch/data'
|
||||
restart: "always"
|
||||
restart: unless-stopped
|
||||
nginx:
|
||||
build:
|
||||
context: ./nginx
|
||||
@@ -61,13 +53,11 @@ services:
|
||||
- ./inventaire:${PROJECT_ROOT}
|
||||
- certbot-www:/var/www/certbot
|
||||
- ./certbot/conf:/etc/letsencrypt
|
||||
environment:
|
||||
PROJECT_ROOT: ${PROJECT_ROOT}
|
||||
PUBLIC_HOSTNAME: ${PUBLIC_HOSTNAME}
|
||||
INVENTAIRE_PORT: ${INVENTAIRE_PORT}
|
||||
env_file: .env
|
||||
depends_on:
|
||||
# Required to be able to define the `inventaire` host as an upstream
|
||||
- inventaire
|
||||
restart: "always"
|
||||
restart: unless-stopped
|
||||
certbot:
|
||||
image: certbot/certbot:latest
|
||||
volumes:
|
||||
|
||||
5
dotenv
5
dotenv
@@ -10,3 +10,8 @@ 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
|
||||
|
||||
NODE_ENV=production
|
||||
NODE_APP_INSTANCE=federated
|
||||
# Matching the port defined in inventaire/config/production-federated.cjs
|
||||
INVENTAIRE_PORT=3016
|
||||
|
||||
Reference in New Issue
Block a user