version: "3.4" networks: internal: ipam: config: - subnet: $PHRASEANET_SUBNET_IPS services: gateway: build: context: . target: phraseanet-nginx args: - SSH_PRIVATE_KEY=${PHRASEANET_SSH_PRIVATE_KEY} - PHRASEANET_PLUGINS=${PHRASEANET_PLUGINS} image: $PHRASEANET_DOCKER_REGISTRY/phraseanet-nginx:$PHRASEANET_DOCKER_TAG restart: on-failure volumes: - ${PHRASEANET_DATA_DIR}:/var/alchemy/Phraseanet/datas:rw - ${PHRASEANET_THUMBNAILS_DIR}:/var/alchemy/Phraseanet/www/thumbnails:rw - ${PHRASEANET_CUSTOM_DIR}:/var/alchemy/Phraseanet/www/custom:rw - ${PHRASEANET_PLUGINS_DIR}:/var/alchemy/Phraseanet/www/plugins:rw depends_on: - phraseanet environment: - MAX_BODY_SIZE - GATEWAY_SEND_TIMEOUT - GATEWAY_PROXY_TIMEOUT - GATEWAY_FASTCGI_TIMEOUT ports: - ${PHRASEANET_APP_PORT}:80 networks: - internal phraseanet: build: context: . target: phraseanet-fpm args: - SSH_PRIVATE_KEY=${PHRASEANET_SSH_PRIVATE_KEY} - PHRASEANET_PLUGINS=${PHRASEANET_PLUGINS} image: $PHRASEANET_DOCKER_REGISTRY/phraseanet-fpm:$PHRASEANET_DOCKER_TAG restart: on-failure depends_on: - redis - rabbitmq - elasticsearch environment: - PHRASEANET_INSTALL - PHRASEANET_SETUP - PHRASEANET_UPGRADE - PHRASEANET_PROJECT_NAME - PHRASEANET_TRUSTED_PROXIES - PHRASEANET_DEBUG_ALLOWED_IP - MAX_BODY_SIZE - MAX_INPUT_VARS - MAX_EXECUTION_TIME - MAX_INPUT_TIME - REQUEST_TERMINATE_TIMEOUT - OPCACHE_ENABLED - SESSION_CACHE_LIMITER - PHP_LOG_LEVEL - PHRASEANET_ADMIN_ACCOUNT_ID - PHRASEANET_ADMIN_ACCOUNT_EMAIL - PHRASEANET_ADMIN_ACCOUNT_PASSWORD - PHRASEANET_DB_HOST - PHRASEANET_DB_PORT - PHRASEANET_DB_USER - PHRASEANET_DB_PASSWORD - INSTALL_DB_TEMPLATE - INSTALL_APPBOX - INSTALL_DATABOX - PHRASEANET_SERVER_NAME - PHRASEANET_AVAILABLE_LANGUAGE - PHRASEANET_DEFAULT_LANGUAGE - PHRASEANET_RABBITMQ_USER=$RABBITMQ_DEFAULT_USER - PHRASEANET_RABBITMQ_PASSWORD=$RABBITMQ_DEFAULT_PASS - PHRASEANET_EMITTER_EMAIL - PHRASEANET_MAIL_OBJECT_PREFIX - PHRASEANET_SMTP_ENABLED - PHRASEANET_SMTP_HOST - PHRASEANET_SMTP_PORT - PHRASEANET_SMTP_AUTH_ENABLED - PHRASEANET_SMTP_SECURE_MODE - PHRASEANET_SMTP_USER - PHRASEANET_SMTP_PASSWORD - PHRASEANET_DOWNLOAD_DIR - PHRASEANET_LAZARET_DIR - PHRASEANET_CAPTION_DIR - PHRASEANET_WORKER_TMP - PHRASEANET_FFMPEG_TIMEOUT - PHRASEANET_FFPROBE_TIMEOUT - PHRASEANET_GS_TIMEOUT - PHRASEANET_MP4BOX_TIMEOUT - PHRASEANET_SWFTOOLS_TIMEOUT - PHRASEANET_UNOCON_TIMEOUT - PHRASEANET_EXIFTOOL_TIMEOUT - PHRASEANET_API_ENABLED - PHRASEANET_API_SSL - PHRASEANET_API_AUTH_TOKEN_HEADER_ONLY - ENV_SET_PHRASEANET_PROJET_NAME - LC_MESSAGES=C.UTF-8 - LC_COLLATE=C.UTF-8 - LC_IDENTIFICATION=C.UTF-8 - LANG=C.UTF-8 - LC_MEASUREMENT=C.UTF-8 - LC_CTYPE=C.UTF-8 - LC_TIME=C.UTF-8 - LC_NAME=C.UTF-8 - NEWRELIC_ENABLED - NEWRELIC_LICENSE_KEY - NEWRELIC_APP_NAME - BLACKFIRE_ENABLED - BLACKFIRE_SERVER_ID - BLACKFIRE_SERVER_TOKEN volumes: - ${PHRASEANET_CONFIG_DIR}:/var/alchemy/Phraseanet/config:rw - ${PHRASEANET_LOGS_DIR}:/var/alchemy/Phraseanet/logs:rw - ${PHRASEANET_DATA_DIR}:/var/alchemy/Phraseanet/datas:rw - ${PHRASEANET_THUMBNAILS_DIR}:/var/alchemy/Phraseanet/www/thumbnails:rw - ${PHRASEANET_CUSTOM_DIR}:/var/alchemy/Phraseanet/www/custom:rw - ${PHRASEANET_PLUGINS_DIR}:/var/alchemy/Phraseanet/www/plugins:rw - ${PHRASEANET_CACHE_DIR}:/var/alchemy/Phraseanet/cache:rw - ${PHRASEANET_TMP_DIR}:/var/alchemy/Phraseanet/tmp:rw networks: - internal worker: build: context: . target: phraseanet-worker args: - SSH_PRIVATE_KEY=${PHRASEANET_SSH_PRIVATE_KEY} - PHRASEANET_PLUGINS=${PHRASEANET_PLUGINS} image: $PHRASEANET_DOCKER_REGISTRY/phraseanet-worker:$PHRASEANET_DOCKER_TAG restart: on-failure depends_on: - redis - rabbitmq - elasticsearch - phraseanet environment: - OPCACHE_ENABLED - SESSION_CACHE_LIMITER - PHP_LOG_LEVEL - LC_MESSAGES=C.UTF-8 - LC_COLLATE=C.UTF-8 - LC_IDENTIFICATION=C.UTF-8 - LANG=C.UTF-8 - LC_MEASUREMENT=C.UTF-8 - LC_CTYPE=C.UTF-8 - LC_TIME=C.UTF-8 - LC_NAME=C.UTF-8 - PHRASEANET_EXPLODE_WORKER - PHRASEANET_WORKER_assetsIngest - PHRASEANET_WORKER_createRecord - PHRASEANET_WORKER_deleteRecord - PHRASEANET_WORKER_exportMail - PHRASEANET_WORKER_exposeUpload - PHRASEANET_WORKER_ftp - PHRASEANET_WORKER_mainQueue - PHRASEANET_WORKER_populateIndex - PHRASEANET_WORKER_pullAssets - PHRASEANET_WORKER_recordEdit - PHRASEANET_WORKER_subdefCreation - PHRASEANET_WORKER_subtitle - PHRASEANET_WORKER_validationReminder - PHRASEANET_WORKER_webhook - PHRASEANET_WORKER_writeMetadatas - IMAGEMAGICK_POLICY_VERSION - IMAGEMAGICK_POLICY_WIDTH - IMAGEMAGICK_POLICY_HEIGHT - IMAGEMAGICK_POLICY_MAP - IMAGEMAGICK_POLICY_MEMORY - IMAGEMAGICK_POLICY_AREA - IMAGEMAGICK_POLICY_DISK - IMAGEMAGICK_POLICY_TEMPORARY_PATH - NEWRELIC_ENABLED - NEWRELIC_LICENSE_KEY - NEWRELIC_APP_NAME - BLACKFIRE_ENABLED - BLACKFIRE_SERVER_ID - BLACKFIRE_SERVER_TOKEN volumes: - ${PHRASEANET_CONFIG_DIR}:/var/alchemy/Phraseanet/config:rw - ${PHRASEANET_LOGS_DIR}:/var/alchemy/Phraseanet/logs:rw - ${PHRASEANET_DATA_DIR}:/var/alchemy/Phraseanet/datas:rw - ${PHRASEANET_THUMBNAILS_DIR}:/var/alchemy/Phraseanet/www/thumbnails:rw - ${PHRASEANET_CUSTOM_DIR}:/var/alchemy/Phraseanet/www/custom:rw - ${PHRASEANET_CACHE_DIR}:/var/alchemy/Phraseanet/cache:rw - ${PHRASEANET_TMP_DIR}:/var/alchemy/Phraseanet/tmp:rw networks: - internal rabbitmq: image: rabbitmq:3-management restart: on-failure environment: - RABBITMQ_DEFAULT_USER - RABBITMQ_DEFAULT_PASS networks: - internal redis: image: redis restart: on-failure networks: - internal elasticsearch: image: $PHRASEANET_DOCKER_REGISTRY/phraseanet-elasticsearch:$PHRASEANET_DOCKER_TAG build: ./docker/elasticsearch restart: on-failure volumes: - ${PHRASEANET_ELASTICSEARCH_DIR}:/usr/share/elasticsearch/data networks: - internal volumes: config_vol: driver: local data_vol: driver: local tmp_vol: driver: local db_vol: driver: local elasticsearch_vol: driver: local thumbnails_vol: driver: local custom_vol: driver: local plugins_dir: driver: local cache_vol: driver: local # to be replacer by stdout/stderr logs_vol: driver: local dev_vol: driver: local