version: "3.4" x-logging: &default-logging driver: "json-file" options: max-size: "10m" max-file: "3" services: identifier: image: semtech/mu-identifier:1.10.1 environment: DEFAULT_MU_AUTH_ALLOWED_GROUPS_HEADER: '[{"variables":[],"name":"public"}]' SESSION_COOKIE_SECURE: "on" labels: - "logging=true" restart: always logging: *default-logging dispatcher: image: semtech/mu-dispatcher:2.1.0-beta.2 volumes: - ./config/dispatcher:/config labels: - "logging=true" restart: always logging: *default-logging triplestore: image: tenforce/virtuoso:1.3.2-virtuoso7.2.5.1 environment: SPARQL_UPDATE: "true" DEFAULT_GRAPH: "http://mu.semte.ch/application" volumes: - ./data/db:/data - ./config/db/virtuoso.ini:/data/virtuoso.ini restart: always logging: *default-logging db: image: semtech/mu-authorization:feature-service-roam-r1.1 environment: MU_SPARQL_ENDPOINT: "http://triplestore:8890/sparql" LOG_OUTGOING_SPARQL_QUERIES: "true" LOG_INCOMING_SPARQL_QUERIES: "true" LOG_ACCESS_RIGHTS: "true" LOG_OUTGOING_SPARQL_QUERY_ROUNDTRIP: "true" ERROR_ON_UNWRITTEN_DATA: "true" QUERY_MAX_PROCESSING_TIME: "300000" QUERY_MAX_EXECUTION_TIME: "300000" volumes: - ./config/authorization:/config labels: - "logging=true" restart: always logging: *default-logging migrations: image: semtech/mu-migrations-service:0.7.0 links: - triplestore:database volumes: - ./config/migrations:/data/migrations labels: - "logging=true" restart: always logging: *default-logging migrations-triggering-indexing: image: semtech/mu-migrations-service:0.8.0 links: - db:database volumes: - ./config/migrations-triggering-indexing:/data/migrations labels: - "logging=true" restart: always logging: *default-logging resource: image: semtech/mu-cl-resources:1.22.2 environment: CACHE_CLEAR_PATH: "http://cache/.mu/clear-keys" links: - db:database volumes: - ./config/resources:/config labels: - "logging=true" restart: always logging: *default-logging cache: image: semtech/mu-cache:2.0.2 links: - resource:backend labels: - "logging=true" restart: always logging: *default-logging kalliope-api: image: lblod/jsonld-delta-service:0.5.6 volumes: - ./config/kalliope:/config - ./data/files:/share links: - db:database environment: SERVER_PORT: "80" LOGGING_LEVEL: "INFO" SPARQL_ENDPOINT: "http://db:8890/sparql" LIMIT_SIZE: "10000" MU_AUTH_SUDO: "true" labels: - "logging=true" restart: always logging: *default-logging deltanotifier: image: cecemel/delta-notifier:0.2.0-beta.2 volumes: - ./config/delta:/config labels: - "logging=true" restart: always logging: *default-logging sink: image: nginx:1.15.2 volumes: - ./config/sink/sink.conf:/etc/nginx/conf.d/default.conf labels: - "logging=true" restart: always logging: *default-logging login: image: lblod/acmidm-login-service:0.9.2 environment: MU_APPLICATION_AUTH_USERID_CLAIM: "vo_id" MU_APPLICATION_GRAPH: "http://mu.semte.ch/graphs/contacthub/accounts" MU_APPLICATION_AUTH_ROLE_CLAIM: "abb_organisatieportaal_rol_3d" MU_APPLICATION_AUTH_DISCOVERY_URL: "https://authenticatie-ti.vlaanderen.be/op" MU_APPLICATION_AUTH_CLIENT_ID: "677af572-2e2f-4e61-ad38-036723bb314c" MU_APPLICATION_AUTH_REDIRECT_URI: "https://organisaties.abb.lblod.info/authorization/callback" MU_APPLICATION_AUTH_CLIENT_SECRET: "secret" labels: - "logging=true" restart: always logging: *default-logging links: - db:database accountdetail: image: lblod/account-detail-service:0.1.0 labels: - "logging=true" environment: MU_APPLICATION_GRAPH: "http://mu.semte.ch/graphs/contacthub/accounts" links: - db:database restart: always logging: *default-logging privacy-worship: image: lblod/privacy-centric-service:0.6.1 labels: - "logging=true" environment: DEFAULT_GRAPH: "http://mu.semte.ch/graphs/worship-privacy-centric-graph" SESSION_GRAPH: "http://mu.semte.ch/graphs/sessions" APP_GRAPH: "http://mu.semte.ch/graphs/public" restart: always logging: *default-logging links: - db:database privacy-unit: image: lblod/privacy-centric-service:0.6.1 labels: - "logging=true" environment: DEFAULT_GRAPH: "http://mu.semte.ch/graphs/administrative-unit-privacy-centric-graph" SESSION_GRAPH: "http://mu.semte.ch/graphs/sessions" APP_GRAPH: "http://mu.semte.ch/graphs/public" restart: always logging: *default-logging links: - db:database adressenregister: image: lblod/adressenregister-fuzzy-search-service:0.7.0 labels: - "logging=true" restart: always logging: *default-logging frontend: image: lblod/frontend-organization-portal:1.20.0 volumes: - ./config/frontend/add-x-frame-options-header.conf:/config/add-x-frame-options.conf environment: EMBER_OAUTH_API_REDIRECT_URL: "https://organisaties.abb.lblod.info/authorization/callback" EMBER_OAUTH_API_KEY: "677af572-2e2f-4e61-ad38-036723bb314c" EMBER_OAUTH_API_BASE_URL: "https://authenticatie-ti.vlaanderen.be/op/v1/auth" EMBER_OAUTH_API_LOGOUT_URL: "https://authenticatie-ti.vlaanderen.be/op/v1/logout" EMBER_OAUTH_API_SCOPE: "openid vo profile abb_organisatieportaal" labels: - "logging=true" restart: always logging: *default-logging uri-info: image: redpencil/mu-uri-info-service:0.2.1 links: - db:database labels: - "logging=true" restart: always logging: *default-logging file: image: semtech/mu-file-service:3.2.0 volumes: - ./data/files:/share labels: - "logging=true" links: - db:database restart: always logging: *default-logging jobs-controller: image: lblod/job-controller-service:0.7.0 links: - db:database volumes: - ./config/jobs-controller/:/config/ labels: - "logging=true" restart: always logging: *default-logging organizations-sync-with-sharepoint-jobs-initiator: image: lblod/delta-producer-background-jobs-initiator:0.4.3 environment: JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs" INITIAL_PUBLICATION_GRAPH_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/sp-sync/initialSyncing/organizations" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/sp-sync/healingOperation/organizations" INITIAL_PUBLICATION_GRAPH_SYNC_TASK_OPERATION: "http://redpencil.data.gift/id/jobs/concept/TaskOperation/sp-sync/initialSyncing" HEALING_TASK_OPERATION: "http://redpencil.data.gift/id/jobs/concept/TaskOperation/sp-sync/healing" CRON_PATTERN_HEALING_JOB: "0 0 4 * * *" # everyday at 4 AM START_INITIAL_SYNC: "false" # prefer to disable it now. We want to have feeling with how the DB acts. ENABLE_DUMP_FILE_CREATION: "false" links: - db:database labels: - "logging=true" restart: always logging: *default-logging organizations-sync-with-sharepoint: image: lblod/op-sync-with-sharepoint-service:0.1.2 environment: INITIAL_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/sp-sync/initialSyncing/organizations" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/sp-sync/healingOperation/organizations" USE_VIRTUOSO_FOR_EXPENSIVE_SELECTS: "true" links: - db:database volumes: - ./config/sharepoint/sync/organizations/:/config/ labels: - "logging=true" restart: always logging: *default-logging construct-administrative-unit-relationships: image: lblod/construct-administrative-unit-relationships-service:0.1.5 environment: START_DATE_WORSHIP_GOVERNING_BODY: "2023-04-01T00:00:00" END_DATE_WORSHIP_GOVERNING_BODY: "2026-03-31T00:00:00" links: - db:database restart: always logging: *default-logging reasoner: image: eyereasoner/reasoning-service:increased-stack-limit volumes: - ./config/reasoner:/config labels: - "logging=true" restart: always logging: *default-logging report-generation: image: lblod/loket-report-generation-service:0.7.0 environment: DEFAULT_GRAPH: "http://mu.semte.ch/graphs/shared" ONLY_KEEP_LATEST_REPORT: "true" links: - db:database volumes: - ./data/files:/share - ./config/reports:/config labels: - "logging=true" restart: always logging: *default-logging download-exports: image: lblod/download-exports-service:0.1.0 links: - db:database volumes: - ./data/files:/share labels: - "logging=true" restart: always logging: *default-logging sync-ovo-numbers: image: lblod/sync-ovo-numbers-service:0.1.0 links: - db:database labels: - "logging=true" restart: always logging: *default-logging ################################################################################ # DELTA GENERAL ################################################################################ delta-producer-dump-file-publisher: image: lblod/delta-producer-dump-file-publisher:0.9.1 volumes: - ./config/delta-producer/dump-file-publisher:/config - ./data/files:/share links: - db:database restart: always logging: *default-logging ################################################################################ # DELTA ORGANIZATIONS: START ################################################################################ delta-producer-bg-jobs-initiator-organizations: image: lblod/delta-producer-background-jobs-initiator:0.3.1 environment: JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs" DUMP_FILE_CREATION_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/organizations" INITIAL_PUBLICATION_GRAPH_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/organizations" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/organizations" CRON_PATTERN_DUMP_JOB: "42 * * * *" # At minute 42 every hour CRON_PATTERN_HEALING_JOB: "0 0 4 * * *" # everyday at 4 AM START_INITIAL_SYNC: "false" # prefer to disable it now. We want to have feeling with how the DB acts. labels: - "logging=true" links: - db:database restart: always logging: *default-logging delta-producer-pub-graph-maintainer-organizations: image: lblod/delta-producer-publication-graph-maintainer:0.15.4 environment: MAX_BODY_SIZE: "50mb" JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs" RELATIVE_FILE_PATH: "deltas/organizations" PUBLICATION_GRAPH: "http://redpencil.data.gift/id/deltas/producer/organizations" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/organizations" INITIAL_PUBLICATION_GRAPH_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/organizations" QUEUE_POLL_INTERVAL: 3000 USE_VIRTUOSO_FOR_EXPENSIVE_SELECTS: "true" # some queries are just too expensive SKIP_MU_AUTH_INITIAL_SYNC: "true" HEALING_PATCH_GRAPH_BATCH_SIZE: 500 SERVE_DELTA_FILES: "true" PUBLISHER_URI: "http://data.lblod.info/services/delta-production-json-diff-file-manager/organizations" DELTA_INTERVAL_MS: 10000 PRETTY_PRINT_DIFF_JSON: "true" ERROR_GRAPH: "http://mu.semte.ch/graphs/jobs" volumes: - ./config/delta-producer/organizations:/config - ./data/files/:/share links: - db:database - triplestore:virtuoso restart: always logging: *default-logging ################################################################################ # DELTA ORGANIZATIONS: END ################################################################################ ################################################################################ # DELTA PUBLIC INFORMATION: START ################################################################################ delta-producer-bg-jobs-initiator-public: image: lblod/delta-producer-background-jobs-initiator:0.3.1 environment: JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs" DUMP_FILE_CREATION_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/public" INITIAL_PUBLICATION_GRAPH_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/public" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/public" CRON_PATTERN_DUMP_JOB: "11 */4 * * *" # At minute 11 every 4 hours CRON_PATTERN_HEALING_JOB: "0 0 4 * * *" # everyday at 4 AM START_INITIAL_SYNC: "false" # prefer to disable it now. We want to have feeling with how the DB acts. labels: - "logging=true" links: - db:database restart: always logging: *default-logging delta-producer-pub-graph-maintainer-public: image: lblod/delta-producer-publication-graph-maintainer:0.15.4 environment: MAX_BODY_SIZE: "50mb" JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs" RELATIVE_FILE_PATH: "deltas/public" PUBLICATION_GRAPH: "http://redpencil.data.gift/id/deltas/producer/public" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/public" INITIAL_PUBLICATION_GRAPH_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/public" QUEUE_POLL_INTERVAL: 3000 USE_VIRTUOSO_FOR_EXPENSIVE_SELECTS: "true" # some queries are just too expensive SKIP_MU_AUTH_INITIAL_SYNC: "true" HEALING_PATCH_GRAPH_BATCH_SIZE: 500 SERVE_DELTA_FILES: "true" PUBLISHER_URI: "http://data.lblod.info/services/delta-production-json-diff-file-manager/public" DELTA_INTERVAL_MS: 10000 PRETTY_PRINT_DIFF_JSON: "true" ERROR_GRAPH: "http://mu.semte.ch/graphs/jobs" volumes: - ./config/delta-producer/public:/config - ./data/files/:/share links: - db:database - triplestore:virtuoso restart: always logging: *default-logging ################################################################################ # DELTA PUBLIC INFORMATION: END ################################################################################ ################################################################################ # DELTA WORSHIP POSTS: START ################################################################################ delta-producer-bg-jobs-initiator-worship-posts: image: lblod/delta-producer-background-jobs-initiator:0.3.1 environment: JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs" DUMP_FILE_CREATION_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/deltaDumpFileCreation/worship-posts" INITIAL_PUBLICATION_GRAPH_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/worship-posts" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/worship-posts" CRON_PATTERN_DUMP_JOB: "17 */4 * * *" # At minute 17 every 4 hours CRON_PATTERN_HEALING_JOB: "0 0 3 * * *" # everyday at 3 AM START_INITIAL_SYNC: "false" # prefer to disable it now. We want to have feeling with how the DB acts. labels: - "logging=true" links: - db:database restart: always logging: *default-logging delta-producer-pub-graph-maintainer-worship-posts: image: lblod/delta-producer-publication-graph-maintainer:0.15.4 environment: MAX_BODY_SIZE: "50mb" JOBS_GRAPH: "http://mu.semte.ch/graphs/jobs" RELATIVE_FILE_PATH: "deltas/worship-posts" PUBLICATION_GRAPH: "http://redpencil.data.gift/id/deltas/producer/worship-posts" HEALING_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/healingOperation/worship-posts" INITIAL_PUBLICATION_GRAPH_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/initialPublicationGraphSyncing/worship-posts" QUEUE_POLL_INTERVAL: 3000 USE_VIRTUOSO_FOR_EXPENSIVE_SELECTS: "true" # some queries are just too expensive SKIP_MU_AUTH_INITIAL_SYNC: "true" HEALING_PATCH_GRAPH_BATCH_SIZE: 500 SERVE_DELTA_FILES: "true" PUBLISHER_URI: "http://data.lblod.info/services/delta-production-json-diff-file-manager/worship-posts" DELTA_INTERVAL_MS: 10000 PRETTY_PRINT_DIFF_JSON: "true" ERROR_GRAPH: "http://mu.semte.ch/graphs/jobs" volumes: - ./config/delta-producer/worship-posts:/config - ./data/files/:/share links: - db:database - triplestore:virtuoso restart: always logging: *default-logging ################################################################################ # DELTA WORSHIP POSTS: END ################################################################################ ################################################################################ # DELTA CONSUMERS ################################################################################ ################################################################################ # LOKET MANDATARISSEN CONSUMERS ################################################################################ mandatarissen-consumer: image: lblod/delta-consumer:0.0.17-rc.7 environment: DCR_SERVICE_NAME: "mandatarissen-consumer" DCR_SYNC_BASE_URL: "https://loket.lblod.info" # replace with link to Loket API DCR_SYNC_DATASET_SUBJECT: "http://data.lblod.info/datasets/delta-producer/dumps/MandatarissenCacheGraphDump" DCR_INITIAL_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/initialSync/mandatarissen" DCR_DELTA_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/deltaSync/mandatarissen" DCR_JOB_CREATOR_URI: "http://data.lblod.info/services/id/mandatarissen-consumer" DCR_DISABLE_INITIAL_SYNC: "true" BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES: "true" BATCH_SIZE: 1000 DCR_SYNC_FILES_PATH: "/sync/mandatarissen/files" DCR_KEEP_DELTA_FILES: "true" DCR_ENABLE_DELTA_CONTEXT: "true" DCR_LANDING_ZONE_DATABASE: "triplestore" DCR_LANDING_ZONE_GRAPH: "http://mu.semte.ch/graphs/landing-zone/mandatarissen" volumes: - ./config/loket-consumer/mandatarissen-dispatching:/config/triples-dispatching/custom-dispatching - ./data/files/consumer-files/mandatarissen:/consumer-files/ restart: always labels: - "logging=true" links: - db:database - triplestore:virtuoso logging: *default-logging ################################################################################ # LOKET LEIDINGGEVENDEN CONSUMERS ################################################################################ leidinggevenden-consumer: image: lblod/delta-consumer:0.0.18 environment: DCR_SERVICE_NAME: "leidinggevenden-consumer" DCR_SYNC_BASE_URL: "https://loket.lblod.info" # replace with link to Loket API DCR_SYNC_DATASET_SUBJECT: "http://data.lblod.info/datasets/delta-producer/dumps/LeidinggevendenCacheGraphDump" DCR_INITIAL_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/initialSync/leidinggevenden" DCR_DELTA_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/deltaSync/leidinggevenden" DCR_JOB_CREATOR_URI: "http://data.lblod.info/services/id/leidinggevenden-consumer" DCR_DISABLE_INITIAL_SYNC: "true" BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES: "true" DCR_SYNC_FILES_PATH: "/sync/leidinggevenden/files" DCR_KEEP_DELTA_FILES: "true" BATCH_SIZE: 1000 DCR_ENABLE_DELTA_CONTEXT: "true" DCR_LANDING_ZONE_DATABASE: "triplestore" DCR_LANDING_ZONE_GRAPH: "http://mu.semte.ch/graphs/landing-zone/leidinggevenden" volumes: - ./config/loket-consumer/leidinggevenden-dispatching:/config/triples-dispatching/custom-dispatching - ./data/files/consumer-files/leidinggevenden:/consumer-files/ restart: always labels: - "logging=true" links: - db:database - triplestore:virtuoso logging: *default-logging ################################################################################ # LOKET WORSHIP SENSITIVE CONSUMERS ################################################################################ worship-services-sensitive-consumer: image: lblod/delta-consumer:0.0.17-rc.7 environment: DCR_SYNC_BASE_URL: "https://loket.lblod.info/" DCR_SERVICE_NAME: "worship-services-sensitive-consumer" DCR_SYNC_DATASET_SUBJECT: "http://data.lblod.info/datasets/delta-producer/dumps/WorshipServicesSensitiveCacheGraphDump" DCR_INITIAL_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/wsSensitive" DCR_DELTA_SYNC_JOB_OPERATION: "http://redpencil.data.gift/id/jobs/concept/JobOperation/deltas/consumer/wsSensitiveDeltaFileSyncing" DCR_JOB_CREATOR_URI: "http://data.lblod.info/services/id/worship-services-sensitive-consumer" DCR_DISABLE_INITIAL_SYNC: "true" BYPASS_MU_AUTH_FOR_EXPENSIVE_QUERIES: "true" DCR_SYNC_FILES_PATH: "/sync/worship-services-sensitive/files" BATCH_SIZE: 1000 DCR_KEEP_DELTA_FILES: "true" DCR_ENABLE_DELTA_CONTEXT: "true" DCR_LANDING_ZONE_DATABASE: "triplestore" DCR_LANDING_ZONE_GRAPH: "http://mu.semte.ch/graphs/landing-zone/worship-services-sensitive" volumes: - ./config/loket-consumer/worship-services-sensitive-dispatching:/config/triples-dispatching/custom-dispatching - ./data/files/consumer-files/worship-services-sensitive:/consumer-files/ restart: always labels: - "logging=true" links: - db:database - triplestore:virtuoso logging: *default-logging ################################################################################ # DELTA CONSUMERS: END ################################################################################ ################################################################################ # LDES PRODUCERS ################################################################################ ldes-delta-pusher: image: redpencil/ldes-delta-pusher:latest profiles: ["dev"] # Disable ldes feed by default until ready for qa/prod environment: LDES_ENDPOINT: 'http://ldes-backend/organizations' volumes: - ./config/ldes-delta-pusher/:/config/ links: - db:database restart: always ldes-backend: image: redpencil/fragmentation-producer:0.4.0 profiles: ["dev"] # Disable ldes feed by default until ready for qa/prod environment: FOLDER_DEPTH: 1 PAGE_RESOURCES_COUNT: 50 LDES_STREAM_PREFIX: 'http://data.lblod.info/streams/op/' TIME_TREE_RELATION_PATH: 'http://www.w3.org/ns/prov#generatedAtTime' CACHE_SIZE: 10 DATA_FOLDER: '/data' ENABLE_AUTH: 'false' restart: always volumes: - './data/ldes-feed/:/data/' ################################################################################ # MU SEARCH ################################################################################ search: image: semtech/mu-search:0.9.1 links: - db:database restart: always volumes: - ./config/search:/config elasticsearch: image: semtech/mu-search-elastic-backend:1.0.1 volumes: - ./data/elasticsearch/:/usr/share/elasticsearch/data environment: - discovery.type=single-node restart: always error-report-service: image: lblod/error-report-service:0.1.0 links: - db:database labels: - "logging=true" restart: always logging: *default-logging roles: image: lblod/select-role-service:0.1.0 labels: - "logging=true" links: - db:database restart: always logging: *default-logging ################################################################################### # MU SCRIPTS # ################################################################################# project-scripts: image: semtech/mu-scripts:1.0.0 volumes: - ./scripts/project:/app/scripts/ restart: "no"