diff --git a/README.md b/README.md index 2dce1e6..4cba217 100644 --- a/README.md +++ b/README.md @@ -110,9 +110,10 @@ cd docker-inventaire git pull origin main # Pull the updated images docker compose pull -# Stop and remove the previous `inventaire` container -# Include the `nginx` container and `--volumes` as otherwise the volume shared between the `inventaire` and the `nginx` container keep the files from the previous image -docker compose down inventaire nginx --volumes +# Stop and remove the previous containers +docker compose down +# Remove the volume hosting inventaire server and client code, to let it be overriden by the updated inventaire image +docker volume rm docker-inventaire_inventaire-server # Restart containers with the new image (with the --detach option, to be able to close the terminal) docker compose up --detach # Check that it restarted without errors diff --git a/docker-compose.yml b/docker-compose.yml index c0d3a57..766de7e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,9 +9,13 @@ services: depends_on: - couchdb - elasticsearch - # Uncomment if you want to access the code: volumes: - inventaire-server:/opt/inventaire + # The following paths are outside /opt/inventaire so that the inventaire-server volume can be removed + # (as required when updating the server and client) without loosing their data + - inventaire-leveldb:/opt/inventaire_leveldb + - inventaire-local-media-storage:/opt/inventaire_local_media_storage + - inventaire-backups:/opt/inventaire_backups logging: options: max-size: "10m" @@ -67,6 +71,7 @@ services: - inventaire-server:/opt/inventaire - certbot-www:/var/www/certbot - ./certbot/conf:/etc/letsencrypt + - nginx-cache:/tmp/nginx env_file: .env depends_on: # Required to be able to define the `inventaire` host as an upstream @@ -87,3 +92,7 @@ volumes: elasticsearch: certbot-www: inventaire-server: + inventaire-leveldb: + inventaire-local-media-storage: + inventaire-backups: + nginx-cache: diff --git a/inventaire/Dockerfile.inventaire b/inventaire/Dockerfile.inventaire index c474582..ec4269f 100644 --- a/inventaire/Dockerfile.inventaire +++ b/inventaire/Dockerfile.inventaire @@ -3,7 +3,7 @@ FROM node:20-slim RUN apt-get update \ && apt-get install -y curl git graphicsmagick inotify-tools jq \ && apt-get clean && rm -rf /var/lib/apt/lists/* \ - && mkdir -p /opt/inventaire \ + && mkdir -p /opt/inventaire /opt/inventaire_leveldb /opt/inventaire_local_media_storage /opt/inventaire_backups \ && chown -R 1000:1000 /opt # Default to the same user as the host (override from command line if needed) @@ -28,7 +28,7 @@ RUN git clone https://git.inventaire.io/inventaire --depth 1 --branch "${GIT_REF WORKDIR /opt/inventaire/client # Include dev dependencies (webpack, svelte-checks) at first to be able to build during the postinstall script -RUN npm ci \ +RUN npm ci --include=dev \ && rm -rf node_modules \ && npm ci --omit=dev --ignore-scripts \ && npm cache clean --force diff --git a/inventaire/docker-entrypoint.sh b/inventaire/docker-entrypoint.sh index f1cbd75..a6bc2a7 100755 --- a/inventaire/docker-entrypoint.sh +++ b/inventaire/docker-entrypoint.sh @@ -21,6 +21,10 @@ module.exports = { username: '${COUCHDB_USER}', password: '${COUCHDB_PASSWORD}', hostname: 'couchdb', + backupFolder: '/opt/inventaire_backups', + }, + leveldb: { + folder: '/opt/inventaire_leveldb' }, elasticsearch: { origin: 'http://elasticsearch:9200', @@ -53,6 +57,9 @@ module.exports = { tenantName: '${SWIFT_TENANT_NAME}', region: '${SWIFT_REGION}', }, + local: { + folder: '/opt/inventaire_local_media_storage' + }, }, }