version: '3' services: inventaire: build: context: ./. dockerfile: Dockerfile.inventaire 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} depends_on: - elasticsearch tty: true logging: options: max-size: "10m" max-file: "3" restart: "always" couchdb: image: couchdb:3.4.2 environment: COUCHDB_USER: ${COUCHDB_USER} COUCHDB_PASSWORD: ${COUCHDB_PASSWORD} volumes: - 'couchdb:/opt/couchdb/data' - './configs:/opt/couchdb/etc/local.d' tty: true restart: "always" elasticsearch: image: elasticsearch:7.16.2 environment: - 'http.host=elasticsearch' - 'transport.host=elasticsearch' # 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' restart: "always" nginx: build: context: ./nginx dockerfile: Dockerfile.nginx ports: - "80:80" - "443:443" volumes: - ./nginx/templates:/etc/nginx/templates/ - ./nginx/snippets:/etc/nginx/snippets - ./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} depends_on: - inventaire restart: "always" certbot: image: certbot/certbot:latest volumes: - ./certbot/conf:/etc/letsencrypt - certbot-www:/var/www/certbot restart: unless-stopped entrypoint: /bin/sh -c "trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot; sleep 12h & wait $${!}; done;" depends_on: - nginx volumes: couchdb: elasticsearch: certbot-www: