├── .gitignore ├── taf └── .gitignore ├── openziti-init.Dockerfile ├── compose-builder ├── .gitignore ├── add-taf-mqtt-broker-mosquitto.yml ├── add-taf-mqtt-broker-nanomq.yml ├── add-secure-device-mqtt.yml ├── common-non-security.env ├── common-security.env ├── add-runtime-token-config-template.yml ├── gen-header ├── add-taf-device-services-mods.yml ├── add-mqtt-broker-nanomq.yml ├── add-mqtt-broker-mosquitto.yml ├── add-modbus-simulator.yml ├── add-postgres.yml ├── add-device-uart.yml ├── add-device-onvif-camera.yml ├── add-mqtt-messagebus.yml ├── add-device-s7.yml ├── add-device-gpio.yml ├── add-device-rest.yml ├── add-device-snmp.yml ├── add-service-secure-template.yml ├── add-device-opc-ua.yml ├── add-device-modbus.yml ├── add-device-virtual.yml ├── add-device-rfid-llrp.yml ├── add-app-record-replay.yml ├── add-device-mqtt.yml ├── add-device-usb-camera.yml ├── add-asc-metrics-influxdb.yml ├── common-sec-stage-gate.env ├── add-secure-mqtt-broker.yml ├── add-device-coap.yml ├── add-app-rfid-llrp-inventory.yml ├── gen_runtime_token_config_compose_ext.sh ├── add-device-can.yml ├── add-secure-mqtt-messagebus.yml ├── add-asc-sample.yml ├── add-device-bacnet-ip.yml ├── add-asc-http-export.yml ├── add-secure-postgres.yml ├── add-device-bacnet-mstp.yml ├── get-api-gateway-token.sh ├── add-asc-mqtt-export.yml ├── add-asc-external-mqtt-trigger.yml ├── add-taf-app-services-secure.yml ├── add-nats-messagebus.yml ├── .env ├── upload-api-gateway-cert.sh ├── add-taf-app-services.yml ├── add-security-zero-trust.yml ├── add-security-proxy.yml ├── gen_secure_compose_ext.sh ├── add-delayed-start-services.yml ├── add-security.yml ├── docker-compose-base.yml └── tui-generator.sh ├── .github ├── semantic.yml ├── PULL_REQUEST_TEMPLATE.md └── Contributing.md ├── OWNERS.md ├── GOVERNANCE.md ├── docker-compose-portainer.yml ├── Jenkinsfile ├── Makefile ├── docker-compose-openziti.yml ├── openziti-init-entrypoint.sh ├── README.md ├── LICENSE ├── docker-compose-no-secty.yml └── docker-compose-no-secty-arm64.yml /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vscode 3 | -------------------------------------------------------------------------------- /taf/.gitignore: -------------------------------------------------------------------------------- 1 | docker-compose-taf-no-secty-mqtt-bus-nanomq.yml 2 | docker-compose-taf-perf-no-secty-mqtt-bus-nanomq.yml -------------------------------------------------------------------------------- /openziti-init.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openziti/ziti-cli:0.33.1 2 | 3 | COPY ./openziti-init-entrypoint.sh /entrypoint.sh 4 | 5 | ENTRYPOINT [ "/entrypoint.sh" ] 6 | -------------------------------------------------------------------------------- /compose-builder/.gitignore: -------------------------------------------------------------------------------- 1 | # docker-compose.yml is generated by the `make gen [options]` command 2 | docker-compose.yml 3 | # staging directory is generated by the shell script gen_secure_compose_ext.sh 4 | gen_ext_scty/ 5 | gen_ext_compose 6 | res/ 7 | -------------------------------------------------------------------------------- /.github/semantic.yml: -------------------------------------------------------------------------------- 1 | allowMergeCommits: true 2 | # Always validate the PR title AND all the commits 3 | titleAndCommits: true 4 | types: 5 | - feat 6 | - fix 7 | - docs 8 | - style 9 | - refactor 10 | - perf 11 | - test 12 | - build 13 | - ci 14 | - revert 15 | 16 | 17 | -------------------------------------------------------------------------------- /compose-builder/add-taf-mqtt-broker-mosquitto.yml: -------------------------------------------------------------------------------- 1 | services: 2 | mqtt-taf-broker: 3 | image: eclipse-mosquitto:${MOSQUITTO_VERSION} 4 | command: "/usr/sbin/mosquitto -c /mosquitto-no-auth.conf" 5 | ports: 6 | - "127.0.0.1:1884:1883" 7 | container_name: edgex-taf-mqtt-broker 8 | hostname: edgex-taf-mqtt-broker 9 | read_only: true 10 | restart: always 11 | networks: 12 | - edgex-network 13 | security_opt: 14 | - no-new-privileges:true 15 | user: "${EDGEX_USER}:${EDGEX_GROUP}" -------------------------------------------------------------------------------- /compose-builder/add-taf-mqtt-broker-nanomq.yml: -------------------------------------------------------------------------------- 1 | volumes: 2 | taf-nanomq-log: 3 | 4 | services: 5 | mqtt-taf-broker: 6 | image: emqx/nanomq:${NANOMQ_VERSION} 7 | ports: 8 | - "127.0.0.1:1884:1883" 9 | container_name: edgex-taf-mqtt-broker 10 | hostname: edgex-taf-mqtt-broker 11 | read_only: true 12 | restart: always 13 | networks: 14 | - edgex-network 15 | security_opt: 16 | - no-new-privileges:true 17 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 18 | volumes: 19 | - taf-nanomq-log:/tmp 20 | -------------------------------------------------------------------------------- /OWNERS.md: -------------------------------------------------------------------------------- 1 | # Repository Owners 2 | 3 | This repository is managed by the EdgeX Core Working Group. As such, the **Core Working Group** chairman is considered the "owner" of the repository and approves all committers of the repository. 4 | 5 | See the [project Wiki TSC page](https://wiki.edgexfoundry.org/pages/viewpage.action?pageId=329436#TechnicalSteeringCommittee(TSC)-WorkingGroups) for information on the current EdgeX TSC and who occupies the role of Core Working Group chair. 6 | 7 | For a complete list of current committers see: https://github.com/orgs/edgexfoundry/teams/edgex-compose-committers/members. 8 | 9 | -------------------------------------------------------------------------------- /GOVERNANCE.md: -------------------------------------------------------------------------------- 1 | # Governance 2 | 3 | Project governance as well as policies, procedures and instructions for contributing to EdgeX Foundry can be found on our Wiki site at the following locations: 4 | 5 | - [EdgeX Technical Steering Committee](https://wiki.edgexfoundry.org/pages/viewpage.action?pageId=329436) 6 | - [Contributor's Guide](https://wiki.edgexfoundry.org/display/FA/Contributor%27s+Guide) 7 | - [Contributor's Process](https://wiki.edgexfoundry.org/display/FA/Contributor%27s+Process) 8 | - [Technical Work](https://wiki.edgexfoundry.org/display/FA/Technical+Work+in+the+EdgeX+Foundry+Project) 9 | - [Contributors, Committers & Maintainers](https://wiki.edgexfoundry.org/pages/viewpage.action?pageId=21823860) -------------------------------------------------------------------------------- /compose-builder/add-secure-device-mqtt.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2022 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-mqtt: 18 | environment: 19 | MQTTBROKERINFO_AUTHMODE: none 20 | MQTTBROKERINFO_CREDENTIALSNAME: message-bus 21 | -------------------------------------------------------------------------------- /compose-builder/common-non-security.env: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2023 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | # 16 | # This file contains the common non-security related environment overrides used many Edgex services. 17 | # 18 | 19 | EDGEX_SECURITY_SECRET_STORE=false 20 | -------------------------------------------------------------------------------- /compose-builder/common-security.env: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2021 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | # 16 | # This file contains the common security related environment overrides used many Edgex services. 17 | # 18 | 19 | EDGEX_SECURITY_SECRET_STORE=true 20 | SECRETSTORE_HOST=edgex-secret-store 21 | CLIENTS_SECURITY_SECRETSTORE_SETUP_HOST=edgex-security-secretstore-setup 22 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | **If your build fails** due to your commit message not passing the build checks, please review the guidelines here: https://github.com/edgexfoundry/edgex-compose/blob/main/.github/Contributing.md 8 | 9 | ## PR Checklist 10 | Please check if your PR fulfills the following requirements: 11 | 12 | - [ ] I am not introducing a breaking change (if you are, flag in conventional commit message with `BREAKING CHANGE:` describing the break) 13 | - [ ] I have fully tested (add details below) this the new feature or bug fix (if not, why?) 14 | - [ ] I have opened a PR for the related docs change (if not, why?) 15 | 16 | 17 | 18 | ## Testing Instructions 19 | 20 | -------------------------------------------------------------------------------- /compose-builder/add-runtime-token-config-template.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2022 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | ${SERVICE_NAME}: 18 | environment: 19 | SECRETSTORE_RUNTIMETOKENPROVIDER_ENABLED: "true" 20 | SECRETSTORE_RUNTIMETOKENPROVIDER_HOST: edgex-security-spiffe-token-provider 21 | volumes: 22 | - /tmp/edgex/secrets/spiffe/public:/tmp/edgex/secrets/spiffe/public:ro,z 23 | depends_on: 24 | - security-spiffe-token-provider 25 | -------------------------------------------------------------------------------- /docker-compose-portainer.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2021 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | version: '3.7' 17 | 18 | volumes: 19 | portainer_data: 20 | 21 | services: 22 | portainer: 23 | image: portainer/portainer-ce 24 | ports: 25 | - "127.0.0.1:9000:9000" 26 | container_name: portainer 27 | restart: always 28 | command: -H unix:///var/run/docker.sock 29 | volumes: 30 | - ${DOCKER_SOCKET_PATH}:/var/run/docker.sock 31 | - portainer_data:/data 32 | 33 | -------------------------------------------------------------------------------- /compose-builder/gen-header: -------------------------------------------------------------------------------- 1 | # * Copyright 2024 Intel Corporation. 2 | # * 3 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 4 | # * in compliance with the License. You may obtain a copy of the License at 5 | # * 6 | # * http://www.apache.org/licenses/LICENSE-2.0 7 | # * 8 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 9 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 10 | # * or implied. See the License for the specific language governing permissions and limitations under 11 | # * the License. 12 | # * 13 | # * EdgeX Foundry, Odessa WIP release 14 | # *******************************************************************************/ 15 | # 16 | # 17 | # 18 | # ************************ This is a generated compose file **************************** 19 | # 20 | # DO NOT MAKE CHANGES that are intended to be permanent to EdgeX edgex-compose repo. 21 | # 22 | # Permanent changes can be made to the source compose files located in the compose-builder folder 23 | # at the top level of the edgex-compose repo. 24 | # 25 | # From the compose-builder folder use `make build` to regenerate all standard compose files variations 26 | # 27 | -------------------------------------------------------------------------------- /compose-builder/add-taf-device-services-mods.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2021 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-virtual: 18 | command: "${CP_FLAGS} --registry --configDir=CONFIG_DIR_PLACE_HOLDER" 19 | volumes: 20 | - /PROFILE_VOLUME_PLACE_HOLDER:CONFIG_DIR_PLACE_HOLDER:z 21 | 22 | device-modbus: 23 | command: "${CP_FLAGS} --registry --configDir=CONFIG_DIR_PLACE_HOLDER" 24 | volumes: 25 | - /PROFILE_VOLUME_PLACE_HOLDER:CONFIG_DIR_PLACE_HOLDER:z 26 | depends_on: 27 | - modbus-simulator 28 | -------------------------------------------------------------------------------- /compose-builder/add-mqtt-broker-nanomq.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2021 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | volumes: 17 | nanomq-log: 18 | 19 | services: 20 | mqtt-broker: 21 | image: emqx/nanomq:${NANOMQ_VERSION} 22 | ports: 23 | - "127.0.0.1:1883:1883" 24 | container_name: edgex-mqtt-broker 25 | hostname: edgex-mqtt-broker 26 | read_only: true 27 | restart: always 28 | networks: 29 | - edgex-network 30 | security_opt: 31 | - no-new-privileges:true 32 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 33 | volumes: 34 | - nanomq-log:/tmp 35 | -------------------------------------------------------------------------------- /compose-builder/add-mqtt-broker-mosquitto.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2021 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | mqtt-broker: 18 | image: eclipse-mosquitto:${MOSQUITTO_VERSION} 19 | command: "/usr/sbin/mosquitto ${MQTT_VERBOSE} -c /mosquitto-no-auth.conf" 20 | ports: 21 | - "127.0.0.1:1883:1883" 22 | container_name: edgex-mqtt-broker 23 | hostname: edgex-mqtt-broker 24 | read_only: true 25 | restart: always 26 | networks: 27 | - edgex-network 28 | security_opt: 29 | - no-new-privileges:true 30 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 31 | -------------------------------------------------------------------------------- /compose-builder/add-modbus-simulator.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2021 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | modbus-simulator: 18 | image: nexus3.edgexfoundry.org:10003/edgex-devops/edgex-modbus-simulator${ARCH}:latest 19 | container_name: edgex-modbus-simulator 20 | hostname: edgex-modbus-simulator 21 | ports: 22 | - 127.0.0.1:1502:1502/tcp 23 | networks: 24 | - edgex-network 25 | read_only: true 26 | restart: always 27 | security_opt: 28 | - no-new-privileges:true 29 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 30 | volumes: 31 | # use host timezone 32 | - /etc/localtime:/etc/localtime:ro 33 | -------------------------------------------------------------------------------- /compose-builder/add-postgres.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 IOTech Ltd 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | volumes: 17 | db-data: 18 | 19 | services: 20 | database: 21 | image: postgres:${POSTGRES_VERSION} 22 | ports: 23 | - "127.0.0.1:5432:5432" 24 | container_name: edgex-postgres 25 | hostname: edgex-postgres 26 | read_only: true 27 | restart: always 28 | networks: 29 | - edgex-network 30 | environment: 31 | POSTGRES_PASSWORD: postgres 32 | POSTGRES_DB: edgex_db 33 | volumes: 34 | # use host timezone 35 | - /etc/localtime:/etc/localtime:ro 36 | - db-data:/var/lib/postgresql/data 37 | security_opt: 38 | - no-new-privileges:true 39 | tmpfs: 40 | - /run 41 | -------------------------------------------------------------------------------- /compose-builder/add-device-uart.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-uart: 18 | image: ${DEVICE_SVC_REPOSITORY}/device-uart${ARCH}:${DEVICE_UART_VERSION} 19 | command: "${CP_FLAGS} --registry" 20 | ports: 21 | - "127.0.0.1:59995:59995" 22 | container_name: edgex-device-uart 23 | hostname: edgex-device-uart 24 | read_only: true 25 | restart: always 26 | networks: 27 | - edgex-network 28 | env_file: 29 | - common-non-security.env 30 | environment: 31 | SERVICE_HOST: edgex-device-uart 32 | depends_on: 33 | - core-keeper 34 | - core-data 35 | - core-metadata 36 | - core-common-config-bootstrapper 37 | security_opt: 38 | - no-new-privileges:true 39 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 40 | -------------------------------------------------------------------------------- /compose-builder/add-device-onvif-camera.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2024 Intel Corporation 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | services: 18 | device-onvif-camera: 19 | image: ${DEVICE_SVC_REPOSITORY}/device-onvif-camera${ARCH}:${DEVICE_ONVIFCAM_VERSION} 20 | command: "${CP_FLAGS} --registry" 21 | ports: 22 | - "127.0.0.1:59984:59984" 23 | container_name: edgex-device-onvif-camera 24 | hostname: edgex-device-onvif-camera 25 | read_only: true 26 | restart: always 27 | networks: 28 | - edgex-network 29 | env_file: 30 | - common-non-security.env 31 | environment: 32 | SERVICE_HOST: edgex-device-onvif-camera 33 | MESSAGEBUS_HOST: edgex-mqtt-broker 34 | depends_on: 35 | - core-keeper 36 | - core-data 37 | - core-metadata 38 | - core-common-config-bootstrapper 39 | security_opt: 40 | - no-new-privileges:true 41 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 42 | volumes: 43 | # use host timezone 44 | - /etc/localtime:/etc/localtime:ro 45 | -------------------------------------------------------------------------------- /compose-builder/add-mqtt-messagebus.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2022 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | rules-engine: 18 | environment: 19 | CONNECTION__EDGEX__MQTTMSGBUS__PORT: 1883 20 | CONNECTION__EDGEX__MQTTMSGBUS__PROTOCOL: tcp 21 | CONNECTION__EDGEX__MQTTMSGBUS__SERVER: edgex-mqtt-broker 22 | CONNECTION__EDGEX__MQTTMSGBUS__TYPE: mqtt 23 | CONNECTION__EDGEX__MQTTMSGBUS__OPTIONAL__CLIENTID: kuiper-rules-engine 24 | CONNECTION__EDGEX__MQTTMSGBUS__OPTIONAL__KEEPALIVE: 500 25 | EDGEX__DEFAULT__PORT: 1883 26 | EDGEX__DEFAULT__PROTOCOL: tcp 27 | EDGEX__DEFAULT__SERVER: edgex-mqtt-broker 28 | EDGEX__DEFAULT__TYPE: mqtt 29 | EDGEX__DEFAULT__OPTIONAL__CLIENTID: kuiper-rules-engine 30 | EDGEX__DEFAULT__OPTIONAL__KEEPALIVE: 500 31 | depends_on: 32 | - mqtt-broker 33 | -------------------------------------------------------------------------------- /compose-builder/add-device-s7.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 YIQISOFT. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-s7: 18 | image: ${DEVICE_SVC_REPOSITORY}/device-s7${ARCH}:${DEVICE_S7_VERSION} 19 | command: "${CP_FLAGS} --registry" 20 | ports: 21 | - '127.0.0.1:59994:59994' 22 | container_name: edgex-device-s7 23 | hostname: edgex-device-s7 24 | networks: 25 | - edgex-network 26 | env_file: 27 | - common-non-security.env 28 | environment: 29 | SERVICE_HOST: edgex-device-s7 30 | depends_on: 31 | - core-keeper 32 | - core-data 33 | - core-metadata 34 | - core-common-config-bootstrapper 35 | security_opt: 36 | - no-new-privileges:true 37 | read_only: true 38 | restart: always 39 | user: '${EDGEX_USER}:${EDGEX_GROUP}' 40 | volumes: 41 | # use host timezone 42 | - /etc/localtime:/etc/localtime:ro 43 | -------------------------------------------------------------------------------- /compose-builder/add-device-gpio.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-gpio: 18 | image: ${DEVICE_SVC_REPOSITORY}/device-gpio${ARCH}:${DEVICE_GPIO_VERSION} 19 | command: "${CP_FLAGS} --registry" 20 | ports: 21 | - "127.0.0.1:59910:59910" 22 | container_name: edgex-device-gpio 23 | hostname: edgex-device-gpio 24 | read_only: true 25 | restart: always 26 | networks: 27 | - edgex-network 28 | env_file: 29 | - common-non-security.env 30 | environment: 31 | SERVICE_HOST: edgex-device-gpio 32 | depends_on: 33 | - core-keeper 34 | - core-data 35 | - core-metadata 36 | - core-common-config-bootstrapper 37 | security_opt: 38 | - no-new-privileges:true 39 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 40 | volumes: 41 | # use host timezone 42 | - /etc/localtime:/etc/localtime:ro 43 | -------------------------------------------------------------------------------- /compose-builder/add-device-rest.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-rest: 18 | image: ${DEVICE_SVC_REPOSITORY}/device-rest${ARCH}:${DEVICE_REST_VERSION} 19 | command: "${CP_FLAGS} --registry" 20 | ports: 21 | - "127.0.0.1:59986:59986" 22 | container_name: edgex-device-rest 23 | hostname: edgex-device-rest 24 | read_only: true 25 | restart: always 26 | networks: 27 | - edgex-network 28 | env_file: 29 | - common-non-security.env 30 | environment: 31 | SERVICE_HOST: edgex-device-rest 32 | depends_on: 33 | - core-keeper 34 | - core-data 35 | - core-metadata 36 | - core-common-config-bootstrapper 37 | security_opt: 38 | - no-new-privileges:true 39 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 40 | volumes: 41 | # use host timezone 42 | - /etc/localtime:/etc/localtime:ro 43 | -------------------------------------------------------------------------------- /compose-builder/add-device-snmp.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-snmp: 18 | image: ${DEVICE_SVC_REPOSITORY}/device-snmp${ARCH}:${DEVICE_SNMP_VERSION} 19 | command: "${CP_FLAGS} --registry" 20 | ports: 21 | - "127.0.0.1:59993:59993" 22 | container_name: edgex-device-snmp 23 | hostname: edgex-device-snmp 24 | networks: 25 | - edgex-network 26 | env_file: 27 | - common-non-security.env 28 | environment: 29 | SERVICE_HOST: edgex-device-snmp 30 | depends_on: 31 | - core-keeper 32 | - core-data 33 | - core-metadata 34 | - core-common-config-bootstrapper 35 | security_opt: 36 | - no-new-privileges:true 37 | read_only: true 38 | restart: always 39 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 40 | volumes: 41 | # use host timezone 42 | - /etc/localtime:/etc/localtime:ro 43 | -------------------------------------------------------------------------------- /compose-builder/add-service-secure-template.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2021 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | security-secretstore-setup: 18 | environment: 19 | EDGEX_ADD_SECRETSTORE_TOKENS: ${TOKEN_LIST} 20 | EDGEX_ADD_KNOWN_SECRETS: ${KNOWN_SECRETS_LIST} 21 | 22 | ${ZERO_TRUST}security-proxy-setup: 23 | ${ZERO_TRUST} environment: 24 | ${ZERO_TRUST} EDGEX_ADD_PROXY_ROUTE: ${EXTRA_PROXY_ROUTE_LIST} 25 | 26 | ${SERVICE_NAME}: 27 | entrypoint: [${SHELL_OVERRIDE} "/edgex-init/ready_to_run_wait_install.sh"] 28 | command: "/${EXECUTABLE} --registry ${CP_FLAGS}" 29 | env_file: 30 | - common-security.env 31 | - common-sec-stage-gate.env 32 | ##${ENVIRONMENT_SECTION} 33 | volumes: 34 | - edgex-init:/edgex-init:ro 35 | - /tmp/edgex/secrets/${SERVICE_KEY}:/tmp/edgex/secrets/${SERVICE_KEY}:ro,z 36 | depends_on: 37 | - security-bootstrapper 38 | -------------------------------------------------------------------------------- /compose-builder/add-device-opc-ua.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2025 YIQISOFT. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-opc-ua: 18 | image: ${DEVICE_SVC_REPOSITORY}/device-opc-ua${ARCH}:${DEVICE_OPCUA_VERSION} 19 | command: "${CP_FLAGS} --registry" 20 | ports: 21 | - '127.0.0.1:59997:59997' 22 | container_name: edgex-device-opc-ua 23 | hostname: edgex-device-opc-ua 24 | networks: 25 | - edgex-network 26 | env_file: 27 | - common-non-security.env 28 | environment: 29 | SERVICE_HOST: edgex-device-opc-ua 30 | depends_on: 31 | - core-keeper 32 | - core-data 33 | - core-metadata 34 | - core-common-config-bootstrapper 35 | security_opt: 36 | - no-new-privileges:true 37 | read_only: true 38 | restart: always 39 | user: '${EDGEX_USER}:${EDGEX_GROUP}' 40 | volumes: 41 | # use host timezone 42 | - /etc/localtime:/etc/localtime:ro 43 | -------------------------------------------------------------------------------- /compose-builder/add-device-modbus.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-modbus: 18 | image: ${DEVICE_SVC_REPOSITORY}/device-modbus${ARCH}:${DEVICE_MODBUS_VERSION} 19 | command: "${CP_FLAGS} --registry" 20 | ports: 21 | - "127.0.0.1:59901:59901" 22 | container_name: edgex-device-modbus 23 | hostname: edgex-device-modbus 24 | networks: 25 | - edgex-network 26 | env_file: 27 | - common-non-security.env 28 | environment: 29 | SERVICE_HOST: edgex-device-modbus 30 | depends_on: 31 | - core-keeper 32 | - core-data 33 | - core-metadata 34 | - core-common-config-bootstrapper 35 | security_opt: 36 | - no-new-privileges:true 37 | read_only: true 38 | restart: always 39 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 40 | volumes: 41 | # use host timezone 42 | - /etc/localtime:/etc/localtime:ro 43 | -------------------------------------------------------------------------------- /compose-builder/add-device-virtual.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-virtual: 18 | image: ${DEVICE_SVC_REPOSITORY}/device-virtual${ARCH}:${DEVICE_VIRTUAL_VERSION} 19 | command: "${CP_FLAGS} --registry" 20 | ports: 21 | - "127.0.0.1:59900:59900" 22 | container_name: edgex-device-virtual 23 | hostname: edgex-device-virtual 24 | read_only: true 25 | restart: always 26 | networks: 27 | - edgex-network 28 | env_file: 29 | - common-non-security.env 30 | environment: 31 | SERVICE_HOST: edgex-device-virtual 32 | depends_on: 33 | - core-keeper 34 | - core-data 35 | - core-metadata 36 | - core-common-config-bootstrapper 37 | security_opt: 38 | - no-new-privileges:true 39 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 40 | volumes: 41 | # use host timezone 42 | - /etc/localtime:/etc/localtime:ro 43 | -------------------------------------------------------------------------------- /compose-builder/add-device-rfid-llrp.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-rfid-llrp: 18 | image: ${DEVICE_SVC_REPOSITORY}/device-rfid-llrp${ARCH}:${DEVICE_LLRP_VERSION} 19 | command: "${CP_FLAGS} --registry" 20 | ports: 21 | - "127.0.0.1:59989:59989" 22 | container_name: edgex-device-rfid-llrp 23 | hostname: edgex-device-rfid-llrp 24 | read_only: true 25 | restart: always 26 | networks: 27 | - edgex-network 28 | env_file: 29 | - common-non-security.env 30 | environment: 31 | SERVICE_HOST: edgex-device-rfid-llrp 32 | depends_on: 33 | - core-keeper 34 | - core-data 35 | - core-metadata 36 | - core-common-config-bootstrapper 37 | security_opt: 38 | - no-new-privileges:true 39 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 40 | volumes: 41 | # use host timezone 42 | - /etc/localtime:/etc/localtime:ro 43 | -------------------------------------------------------------------------------- /compose-builder/add-app-record-replay.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | app-record-replay: 18 | image: ${APP_SVC_REPOSITORY}/app-record-replay${ARCH}:${APP_RECORD_REPLAY_VERSION} 19 | command: "--registry ${CP_FLAGS}" 20 | ports: 21 | - 127.0.0.1:59712:59712/tcp 22 | container_name: edgex-app-record-replay 23 | hostname: edgex-app-record-replay 24 | env_file: 25 | - common-non-security.env 26 | environment: 27 | SERVICE_HOST: edgex-app-record-replay 28 | depends_on: 29 | - core-keeper 30 | - database 31 | - core-metadata 32 | - core-common-config-bootstrapper 33 | read_only: true 34 | restart: always 35 | networks: 36 | - edgex-network 37 | security_opt: 38 | - no-new-privileges:true 39 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 40 | volumes: 41 | # use host timezone 42 | - /etc/localtime:/etc/localtime:ro 43 | 44 | -------------------------------------------------------------------------------- /compose-builder/add-device-mqtt.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-mqtt: 18 | image: ${DEVICE_SVC_REPOSITORY}/device-mqtt${ARCH}:${DEVICE_MQTT_VERSION} 19 | command: "${CP_FLAGS} --registry" 20 | ports: 21 | - "127.0.0.1:59982:59982" 22 | container_name: edgex-device-mqtt 23 | hostname: edgex-device-mqtt 24 | read_only: true 25 | restart: always 26 | networks: 27 | - edgex-network 28 | env_file: 29 | - common-non-security.env 30 | environment: 31 | SERVICE_HOST: edgex-device-mqtt 32 | MQTTBROKERINFO_HOST: edgex-mqtt-broker 33 | depends_on: 34 | - core-keeper 35 | - core-data 36 | - core-metadata 37 | - mqtt-broker 38 | - core-common-config-bootstrapper 39 | security_opt: 40 | - no-new-privileges:true 41 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 42 | volumes: 43 | # use host timezone 44 | - /etc/localtime:/etc/localtime:ro 45 | -------------------------------------------------------------------------------- /compose-builder/add-device-usb-camera.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright (c) 2024 Intel Corporation 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | services: 18 | device-usb-camera: 19 | image: ${DEVICE_SVC_REPOSITORY}/device-usb-camera${ARCH}:${DEVICE_USBCAM_VERSION} 20 | command: "${CP_FLAGS} --registry" 21 | ports: 22 | - "127.0.0.1:59983:59983" 23 | - "127.0.0.1:8554:8554/tcp" 24 | container_name: edgex-device-usb-camera 25 | hostname: edgex-device-usb-camera 26 | read_only: true 27 | restart: always 28 | networks: 29 | - edgex-network 30 | env_file: 31 | - common-non-security.env 32 | environment: 33 | SERVICE_HOST: edgex-device-usb-camera 34 | depends_on: 35 | - core-keeper 36 | - core-data 37 | - core-metadata 38 | - core-common-config-bootstrapper 39 | security_opt: 40 | - no-new-privileges:true 41 | user: root:root 42 | device_cgroup_rules: 43 | - 'c 81:* rw' # c:character device 81:device major number(81=webcam) *:device minor number rw:read/write 44 | volumes: 45 | # use host timezone 46 | - /etc/localtime:/etc/localtime:ro 47 | - /dev:/dev 48 | - /run/udev:/run/udev:ro 49 | -------------------------------------------------------------------------------- /compose-builder/add-asc-metrics-influxdb.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | app-metrics-influxdb: 18 | image: ${APP_SVC_REPOSITORY}/app-service-configurable${ARCH}:${APP_SERVICE_CONFIG_VERSION} 19 | command: "--registry ${CP_FLAGS}" 20 | ports: 21 | - 127.0.0.1:59707:59707/tcp 22 | container_name: edgex-app-metrics-influxdb 23 | hostname: edgex-app-metrics-influxdb 24 | env_file: 25 | - common-non-security.env 26 | environment: 27 | SERVICE_HOST: edgex-app-metrics-influxdb 28 | EDGEX_PROFILE: metrics-influxdb 29 | depends_on: 30 | - core-keeper 31 | - core-metadata 32 | - core-common-config-bootstrapper 33 | read_only: true 34 | restart: always 35 | networks: 36 | - edgex-network 37 | security_opt: 38 | - no-new-privileges:true 39 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 40 | volumes: 41 | # use host timezone 42 | - /etc/localtime:/etc/localtime:ro 43 | -------------------------------------------------------------------------------- /compose-builder/common-sec-stage-gate.env: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2021 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | # 16 | # This file contains the common security bootstrapper related environment overrides used many Edgex services. 17 | # 18 | 19 | STAGEGATE_WAITFOR_TIMEOUT=60s 20 | STAGEGATE_BOOTSTRAPPER_HOST=edgex-security-bootstrapper 21 | STAGEGATE_BOOTSTRAPPER_STARTPORT=54321 22 | STAGEGATE_SECRETSTORESETUP_HOST=edgex-security-secretstore-setup 23 | STAGEGATE_SECRETSTORESETUP_TOKENS_READYPORT=54322 24 | # this is intended to be the same as Database.Host/.Port for other services 25 | STAGEGATE_DATABASE_HOST=${DATABASE_HOST} 26 | STAGEGATE_DATABASE_PORT=${DATABASE_PORT} 27 | STAGEGATE_DATABASE_READYPORT=${DATABASE_PORT} 28 | # this is intended to be the same as Registry.Host/.Port for other services 29 | STAGEGATE_REGISTRY_HOST=edgex-core-keeper 30 | STAGEGATE_REGISTRY_PORT=59890 31 | STAGEGATE_REGISTRY_READYPORT=54324 32 | STAGEGATE_READY_TORUNPORT=54329 33 | PROXY_SETUP_HOST=edgex-security-proxy-setup 34 | STAGEGATE_PROXYSETUP_READYPORT=54325 35 | -------------------------------------------------------------------------------- /compose-builder/add-secure-mqtt-broker.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2022 Intel Corporation. 3 | # * Copyright 2024 IOTech Ltd 4 | # * 5 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 6 | # * in compliance with the License. You may obtain a copy of the License at 7 | # * 8 | # * http://www.apache.org/licenses/LICENSE-2.0 9 | # * 10 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 11 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 | # * or implied. See the License for the specific language governing permissions and limitations under 13 | # * the License. 14 | # * 15 | # *******************************************************************************/ 16 | 17 | volumes: 18 | mqtt: 19 | 20 | services: 21 | mqtt-broker: 22 | command: "/usr/sbin/mosquitto ${MQTT_VERBOSE} -c /mosquitto/config/mosquitto.conf" 23 | entrypoint: ["/edgex-init/messagebus_wait_install.sh"] 24 | env_file: 25 | - common-security.env 26 | - common-sec-stage-gate.env 27 | environment: 28 | BROKER_TYPE: mosquitto 29 | CONF_DIR: /edgex-init/bootstrap-mosquitto/res 30 | ENTRYPOINT: /docker-entrypoint.sh /usr/sbin/mosquitto ${MQTT_VERBOSE} -c /mosquitto/config/mosquitto.conf 31 | volumes: 32 | - mqtt:/mosquitto 33 | - edgex-init:/edgex-init:ro 34 | - /tmp/edgex/secrets/security-bootstrapper-messagebus:/tmp/edgex/secrets/security-bootstrapper-messagebus:ro,z 35 | depends_on: 36 | - security-bootstrapper 37 | - security-secretstore-setup 38 | # root privilege required for bootstrapper's process 39 | user: root:root 40 | -------------------------------------------------------------------------------- /compose-builder/add-device-coap.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-coap: 18 | image: ${DEVICE_SVC_REPOSITORY}/device-coap${ARCH}:${DEVICE_COAP_VERSION} 19 | command: "${CP_FLAGS} --registry" 20 | ports: 21 | - "127.0.0.1:59988:59988" 22 | container_name: edgex-device-coap 23 | hostname: edgex-device-coap 24 | read_only: true 25 | restart: always 26 | networks: 27 | - edgex-network 28 | env_file: 29 | - common-non-security.env 30 | environment: 31 | SERVICE_HOST: edgex-device-coap 32 | DATABASE_HOST: ${DATABASE_HOST} 33 | MESSAGEBUS_HOST: ${MESSAGEBUS_HOST} 34 | CLIENTS_CORE_METADATA_HOST: edgex-core-metadata 35 | depends_on: 36 | - core-keeper 37 | - core-data 38 | - core-metadata 39 | - core-common-config-bootstrapper 40 | security_opt: 41 | - no-new-privileges:true 42 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 43 | volumes: 44 | # use host timezone 45 | - /etc/localtime:/etc/localtime:ro 46 | -------------------------------------------------------------------------------- /compose-builder/add-app-rfid-llrp-inventory.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | volumes: 17 | llrp-inventory-data: 18 | 19 | services: 20 | app-rfid-llrp-inventory: 21 | image: ${APP_SVC_REPOSITORY}/app-rfid-llrp-inventory${ARCH}:${APP_LLRP_VERSION} 22 | command: "--registry ${CP_FLAGS}" 23 | ports: 24 | - 127.0.0.1:59711:59711/tcp 25 | container_name: edgex-app-rfid-llrp-inventory 26 | hostname: edgex-app-rfid-llrp-inventory 27 | env_file: 28 | - common-non-security.env 29 | environment: 30 | SERVICE_HOST: edgex-app-rfid-llrp-inventory 31 | depends_on: 32 | - core-keeper 33 | - core-data 34 | - core-metadata 35 | - core-common-config-bootstrapper 36 | read_only: true 37 | restart: always 38 | networks: 39 | - edgex-network 40 | security_opt: 41 | - no-new-privileges:true 42 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 43 | volumes: 44 | # use host timezone 45 | - /etc/localtime:/etc/localtime:ro 46 | - llrp-inventory-data:/cache 47 | 48 | -------------------------------------------------------------------------------- /compose-builder/gen_runtime_token_config_compose_ext.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # /******************************************************************************* 3 | # * Copyright 2022 Intel Corporation. 4 | # * 5 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 6 | # * in compliance with the License. You may obtain a copy of the License at 7 | # * 8 | # * http://www.apache.org/licenses/LICENSE-2.0 9 | # * 10 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 11 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 | # * or implied. See the License for the specific language governing permissions and limitations under 13 | # * the License. 14 | # *******************************************************************************/ 15 | 16 | # This shell script is used to generate the extension of docker-compose yaml file in secure mode dynamically 17 | # for adding configuration of runtime token provider 18 | 19 | num_of_args=$# 20 | # the positional input arguments are <"service_name"> 21 | 22 | service_name='' 23 | if [ "$num_of_args" -ne 1 ]; then 24 | echo "ERROR: Invalid number of arguments, should be at 1: required" 25 | exit 1 26 | fi 27 | 28 | service_name=$1 29 | 30 | DEFAULT_GEN_EXT_DIR="gen_ext_compose" 31 | GEN_EXT_DIR="${GEN_EXT_DIR:-$DEFAULT_GEN_EXT_DIR}" 32 | mkdir -p "$GEN_EXT_DIR" 33 | 34 | ADD_RUNTIME_TOKEN_CONFIG_FILE_TEMPLATE="add-runtime-token-config-template.yml" 35 | 36 | SERVICE_EXT_COMPOSE_PATH=./"$GEN_EXT_DIR"/add-"$service_name"-runtime-token-config.yml 37 | sed 's/${SERVICE_NAME}:/'"$service_name"':/g' "$ADD_RUNTIME_TOKEN_CONFIG_FILE_TEMPLATE" > "$SERVICE_EXT_COMPOSE_PATH" 38 | 39 | # return the extension compose file path 40 | echo "$SERVICE_EXT_COMPOSE_PATH" 41 | -------------------------------------------------------------------------------- /compose-builder/add-device-can.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2025 IOTech Ltd 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | device-can: 18 | image: ${DEVICE_SVC_REPOSITORY}/device-can${ARCH}:${DEVICE_CAN_VERSION} 19 | command: "${CP_FLAGS} --registry" 20 | ports: 21 | - "127.0.0.1:59999:59999" 22 | container_name: edgex-device-can 23 | hostname: edgex-device-can 24 | read_only: true 25 | restart: always 26 | networks: 27 | - edgex-network 28 | env_file: 29 | - common-non-security.env 30 | environment: 31 | SERVICE_HOST: edgex-device-can 32 | DATABASE_HOST: ${DATABASE_HOST} 33 | MESSAGEBUS_HOST: ${MESSAGEBUS_HOST} 34 | CLIENTS_CORE_METADATA_HOST: edgex-core-metadata 35 | CLIENTS_CORE_DATA_HOST: edgex-core-data 36 | depends_on: 37 | - core-keeper 38 | - core-data 39 | - core-metadata 40 | - core-common-config-bootstrapper 41 | security_opt: 42 | - no-new-privileges:true 43 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 44 | volumes: 45 | # use host timezone 46 | - /etc/localtime:/etc/localtime:ro 47 | -------------------------------------------------------------------------------- /compose-builder/add-secure-mqtt-messagebus.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2022 Intel Corporation. 3 | # * Copyright 2024 IOTech Ltd 4 | # * 5 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 6 | # * in compliance with the License. You may obtain a copy of the License at 7 | # * 8 | # * http://www.apache.org/licenses/LICENSE-2.0 9 | # * 10 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 11 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 | # * or implied. See the License for the specific language governing permissions and limitations under 13 | # * the License. 14 | # * 15 | # *******************************************************************************/ 16 | 17 | volumes: 18 | kuiper-sources: 19 | kuiper-connections: 20 | 21 | services: 22 | security-secretstore-setup: 23 | environment: 24 | SECUREMESSAGEBUS_TYPE: mqtt 25 | volumes: 26 | - kuiper-sources:/tmp/kuiper 27 | - kuiper-connections:/tmp/kuiper-connections 28 | 29 | core-common-config-bootstrapper: 30 | environment: 31 | ALL_SERVICES_MESSAGEBUS_AUTHMODE: usernamepassword 32 | ALL_SERVICES_MESSAGEBUS_SECRETNAME: message-bus 33 | 34 | rules-engine: 35 | entrypoint: [ "/edgex-init/kuiper_wait_install.sh" ] 36 | env_file: 37 | - common-sec-stage-gate.env 38 | environment: 39 | EDGEX__DEFAULT__CONNECTIONSELECTOR: mqttmsgbus 40 | volumes: 41 | - kuiper-sources:/kuiper/etc/sources 42 | - kuiper-connections:/kuiper/etc/connections 43 | - edgex-init:/edgex-init:ro 44 | depends_on: 45 | - security-bootstrapper 46 | - security-secretstore-setup 47 | - database 48 | 49 | -------------------------------------------------------------------------------- /compose-builder/add-asc-sample.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | app-sample: 18 | image: ${APP_SVC_REPOSITORY}/app-service-configurable${ARCH}:${APP_SERVICE_CONFIG_VERSION} 19 | command: "--registry ${CP_FLAGS}" 20 | ports: 21 | - 127.0.0.1:59700:59700/tcp 22 | container_name: edgex-app-sample 23 | hostname: edgex-app-sample 24 | env_file: 25 | - common-non-security.env 26 | environment: 27 | EDGEX_PROFILE: sample 28 | SERVICE_HOST: edgex-app-sample 29 | CLIENTS_CORE_DATA_HOST: edgex-core-data 30 | CLIENTS_CORE_COMMAND_HOST: edgex-core-command 31 | CLIENTS_SUPPORT-NOTIFICATIONS_HOST: edgex-support-notifications 32 | depends_on: 33 | - core-keeper 34 | - core-metadata 35 | - core-common-config-bootstrapper 36 | read_only: true 37 | restart: always 38 | networks: 39 | - edgex-network 40 | security_opt: 41 | - no-new-privileges:true 42 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 43 | volumes: 44 | # use host timezone 45 | - /etc/localtime:/etc/localtime:ro 46 | -------------------------------------------------------------------------------- /compose-builder/add-device-bacnet-ip.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * Copyright 2023 IOTech. 4 | # * 5 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 6 | # * in compliance with the License. You may obtain a copy of the License at 7 | # * 8 | # * http://www.apache.org/licenses/LICENSE-2.0 9 | # * 10 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 11 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 | # * or implied. See the License for the specific language governing permissions and limitations under 13 | # * the License. 14 | # * 15 | # *******************************************************************************/ 16 | 17 | services: 18 | device-bacnet-ip: 19 | image: ${DEVICE_SVC_REPOSITORY}/device-bacnet${ARCH}:${DEVICE_BACNET_VERSION} 20 | command: "${CP_FLAGS} --registry" 21 | ports: 22 | - "127.0.0.1:59980:59980" 23 | container_name: edgex-device-bacnet-ip 24 | hostname: edgex-device-bacnet-ip 25 | networks: 26 | - edgex-network 27 | env_file: 28 | - common-non-security.env 29 | environment: 30 | SERVICE_HOST: edgex-device-bacnet-ip 31 | DATABASE_HOST: ${DATABASE_HOST} 32 | MESSAGEBUS_HOST: ${MESSAGEBUS_HOST} 33 | CLIENTS_CORE_METADATA_HOST: edgex-core-metadata 34 | depends_on: 35 | - core-keeper 36 | - core-data 37 | - core-metadata 38 | - core-common-config-bootstrapper 39 | security_opt: 40 | - no-new-privileges:true 41 | read_only: true 42 | restart: always 43 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 44 | volumes: 45 | # use host timezone 46 | - /etc/localtime:/etc/localtime:ro 47 | -------------------------------------------------------------------------------- /compose-builder/add-asc-http-export.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | app-http-export: 18 | image: ${APP_SVC_REPOSITORY}/app-service-configurable${ARCH}:${APP_SERVICE_CONFIG_VERSION} 19 | command: "--registry ${CP_FLAGS}" 20 | ports: 21 | - 127.0.0.1:59704:59704/tcp 22 | container_name: edgex-app-http-export 23 | hostname: edgex-app-http-export 24 | env_file: 25 | - common-non-security.env 26 | environment: 27 | SERVICE_HOST: edgex-app-http-export 28 | EDGEX_PROFILE: http-export 29 | WRITABLE_PIPELINE_FUNCTIONS_HTTPEXPORT_PARAMETERS_URL: "http://EXPORT_HOST_PLACE_HOLDER:7770" 30 | WRITABLE_LOGLEVEL: INFO # allows scripts to find and change with sed 31 | depends_on: 32 | - core-keeper 33 | - core-data 34 | - core-metadata 35 | - core-common-config-bootstrapper 36 | read_only: true 37 | restart: always 38 | networks: 39 | - edgex-network 40 | security_opt: 41 | - no-new-privileges:true 42 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 43 | volumes: 44 | # use host timezone 45 | - /etc/localtime:/etc/localtime:ro 46 | -------------------------------------------------------------------------------- /compose-builder/add-secure-postgres.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024-2025 IOTech Ltd 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | volumes: 17 | postgres-data: 18 | 19 | services: 20 | database: 21 | entrypoint: ["/edgex-init/postgres_wait_install.sh"] 22 | image: postgres:${POSTGRES_VERSION} 23 | ports: 24 | - "127.0.0.1:5432:5432" 25 | container_name: edgex-postgres 26 | hostname: edgex-postgres 27 | read_only: true 28 | restart: always 29 | networks: 30 | - edgex-network 31 | env_file: 32 | - common-security.env 33 | - common-sec-stage-gate.env 34 | environment: 35 | DATABASECONFIG_PATH: /tmp/postgres-init-scripts 36 | DATABASECONFIG_NAME: create-users.sh 37 | POSTGRES_DB: edgex_db 38 | security_opt: 39 | - no-new-privileges:true 40 | tmpfs: 41 | - /run 42 | - /tmp 43 | volumes: 44 | - /etc/localtime:/etc/localtime:ro 45 | - edgex-init:/edgex-init:ro 46 | - db-data:/var/lib/postgresql/data 47 | - /tmp/edgex/secrets/security-bootstrapper-postgres:/tmp/edgex/secrets/security-bootstrapper-postgres:ro,z 48 | depends_on: 49 | - security-bootstrapper 50 | - security-secretstore-setup 51 | -------------------------------------------------------------------------------- /compose-builder/add-device-bacnet-mstp.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * Copyright 2023 IOTech. 4 | # * 5 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 6 | # * in compliance with the License. You may obtain a copy of the License at 7 | # * 8 | # * http://www.apache.org/licenses/LICENSE-2.0 9 | # * 10 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 11 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 | # * or implied. See the License for the specific language governing permissions and limitations under 13 | # * the License. 14 | # * 15 | # *******************************************************************************/ 16 | 17 | services: 18 | device-bacnet-mstp: 19 | image: ${DEVICE_SVC_REPOSITORY}/device-bacnet${ARCH}:${DEVICE_BACNET_VERSION} 20 | command: "${CP_FLAGS} --registry" 21 | entrypoint: 22 | - /device-bacnet-mstp/device-bacnet-c 23 | ports: 24 | - "127.0.0.1:59981:59980" 25 | container_name: edgex-device-bacnet-mstp 26 | hostname: edgex-device-bacnet-mstp 27 | networks: 28 | - edgex-network 29 | env_file: 30 | - common-non-security.env 31 | environment: 32 | SERVICE_HOST: edgex-device-bacnet-mstp 33 | DATABASE_HOST: ${DATABASE_HOST} 34 | MESSAGEBUS_HOST: ${MESSAGEBUS_HOST} 35 | CLIENTS_CORE_METADATA_HOST: edgex-core-metadata 36 | depends_on: 37 | - core-keeper 38 | - core-data 39 | - core-metadata 40 | - core-common-config-bootstrapper 41 | security_opt: 42 | - no-new-privileges:true 43 | read_only: true 44 | restart: always 45 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 46 | volumes: 47 | # use host timezone 48 | - /etc/localtime:/etc/localtime:ro 49 | -------------------------------------------------------------------------------- /compose-builder/get-api-gateway-token.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # /******************************************************************************* 3 | # * Copyright 2022-2023 Intel Corporation. 4 | # * 5 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 6 | # * in compliance with the License. You may obtain a copy of the License at 7 | # * 8 | # * http://www.apache.org/licenses/LICENSE-2.0 9 | # * 10 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 11 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 | # * or implied. See the License for the specific language governing permissions and limitations under 13 | # * the License. 14 | # *******************************************************************************/ 15 | 16 | username=edgexuser 17 | 18 | # Start afresh by deleting old user 19 | docker exec -ti edgex-security-proxy-setup ./secrets-config proxy deluser --user "${username}" --useRootToken > /dev/null 20 | 21 | # Create new user, log in, and exchange for JWT 22 | password=$(docker exec -ti edgex-security-proxy-setup ./secrets-config proxy adduser --user "${username}" --useRootToken | jq -r '.password') 23 | secret_store_token=$(curl -ks "http://localhost:8200/v1/auth/userpass/login/${username}" -d "{\"password\":\"${password}\"}" | jq -r '.auth.client_token') 24 | id_token=$(curl -ks -H "Authorization: Bearer ${secret_store_token}" "http://localhost:8200/v1/identity/oidc/token/${username}" | jq -r '.data.token') 25 | 26 | # Check that we got sane output from the previous commands before coughing up the token 27 | introspect_result=$(curl -ks -H "Authorization: Bearer ${secret_store_token}" "http://localhost:8200/v1/identity/oidc/introspect" -d "{\"token\":\"${id_token}\"}" | jq -r '.active') 28 | if [ "${introspect_result}" = "true" ]; then 29 | echo "${id_token}" 30 | exit 0 31 | else 32 | echo "ERROR" >&2 33 | exit 1 34 | fi 35 | -------------------------------------------------------------------------------- /compose-builder/add-asc-mqtt-export.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | app-mqtt-export: 18 | image: ${APP_SVC_REPOSITORY}/app-service-configurable${ARCH}:${APP_SERVICE_CONFIG_VERSION} 19 | command: "--registry ${CP_FLAGS}" 20 | ports: 21 | - 127.0.0.1:59703:59703/tcp 22 | container_name: edgex-app-mqtt-export 23 | hostname: edgex-app-mqtt-export 24 | env_file: 25 | - common-non-security.env 26 | environment: 27 | SERVICE_HOST: edgex-app-mqtt-export 28 | EDGEX_PROFILE: mqtt-export 29 | WRITABLE_PIPELINE_FUNCTIONS_MQTTEXPORT_PARAMETERS_BROKERADDRESS: MQTT_BROKER_ADDRESS_PLACE_HOLDER 30 | WRITABLE_PIPELINE_FUNCTIONS_MQTTEXPORT_PARAMETERS_TOPIC: edgex-events 31 | WRITABLE_LOGLEVEL: INFO # allows scripts to find and change with sed 32 | depends_on: 33 | - core-keeper 34 | - core-metadata 35 | - core-common-config-bootstrapper 36 | read_only: true 37 | restart: always 38 | networks: 39 | - edgex-network 40 | security_opt: 41 | - no-new-privileges:true 42 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 43 | volumes: 44 | # use host timezone 45 | - /etc/localtime:/etc/localtime:ro 46 | -------------------------------------------------------------------------------- /compose-builder/add-asc-external-mqtt-trigger.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | app-external-mqtt-trigger: 18 | image: ${APP_SVC_REPOSITORY}/app-service-configurable${ARCH}:${APP_SERVICE_CONFIG_VERSION} 19 | command: "--registry ${CP_FLAGS}" 20 | ports: 21 | - 127.0.0.1:59706:59706/tcp 22 | container_name: edgex-app-external-mqtt-trigger 23 | hostname: edgex-app-external-mqtt-trigger 24 | env_file: 25 | - common-non-security.env 26 | environment: 27 | SERVICE_HOST: edgex-app-external-mqtt-trigger 28 | EDGEX_PROFILE: external-mqtt-trigger 29 | TRIGGER_EXTERNALMQTT_URL: MQTT_BROKER_ADDRESS_PLACE_HOLDER 30 | WRITABLE_PIPELINE_FUNCTIONS_MQTTEXPORT_PARAMETERS_BROKERADDRESS: MQTT_BROKER_ADDRESS_PLACE_HOLDER 31 | WRITABLE_PIPELINE_FUNCTIONS_MQTTEXPORT_PARAMETERS_TOPIC: edgex-export 32 | WRITABLE_LOGLEVEL: INFO 33 | depends_on: 34 | - core-keeper 35 | - core-data 36 | - core-metadata 37 | - core-common-config-bootstrapper 38 | read_only: true 39 | restart: always 40 | networks: 41 | - edgex-network 42 | security_opt: 43 | - no-new-privileges:true 44 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 45 | volumes: 46 | # use host timezone 47 | - /etc/localtime:/etc/localtime:ro 48 | -------------------------------------------------------------------------------- /compose-builder/add-taf-app-services-secure.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | security-secretstore-setup: 18 | environment: 19 | EDGEX_ADD_SECRETSTORE_TOKENS: ${TOKEN_LIST} 20 | EDGEX_ADD_KNOWN_SECRETS: ${KNOWN_SECRETS_LIST} 21 | 22 | app-functional-tests: 23 | entrypoint: ["/edgex-init/ready_to_run_wait_install.sh"] 24 | command: "/app-service-configurable --registry ${CP_FLAGS}" 25 | env_file: 26 | - common-security.env 27 | - common-sec-stage-gate.env 28 | volumes: 29 | - edgex-init:/edgex-init:ro 30 | - /tmp/edgex/secrets/app-functional-tests:/tmp/edgex/secrets/app-functional-tests:ro,z 31 | depends_on: 32 | - security-bootstrapper 33 | - core-metadata 34 | - core-common-config-bootstrapper 35 | 36 | app-scalability-test-mqtt-export: 37 | entrypoint: ["/edgex-init/ready_to_run_wait_install.sh"] 38 | command: "/app-service-configurable --registry ${CP_FLAGS}" 39 | env_file: 40 | - common-security.env 41 | - common-sec-stage-gate.env 42 | volumes: 43 | - edgex-init:/edgex-init:ro 44 | - /tmp/edgex/secrets/app-scalability-test-mqtt-export:/tmp/edgex/secrets/app-scalability-test-mqtt-export:ro,z 45 | depends_on: 46 | - security-bootstrapper 47 | - core-metadata 48 | - core-common-config-bootstrapper 49 | 50 | -------------------------------------------------------------------------------- /Jenkinsfile: -------------------------------------------------------------------------------- 1 | pipeline { 2 | agent { 3 | label 'centos7-docker-4c-2g' 4 | } 5 | options { 6 | timestamps() 7 | quietPeriod(5) // wait a few seconds before starting to aggregate builds...?? 8 | durabilityHint 'PERFORMANCE_OPTIMIZED' 9 | timeout(360) 10 | } 11 | parameters { 12 | booleanParam defaultValue: false, description: 'Archive 3rd Party Images', name: 'ARCHIVE' 13 | } 14 | triggers { 15 | issueCommentTrigger('.*^recheck$.*') 16 | } 17 | stages { 18 | stage('Smoke Tests') { 19 | when { 20 | expression { !edgex.isReleaseStream() && !params.ARCHIVE } 21 | } 22 | steps { 23 | build job: '/edgexfoundry/edgex-taf-pipelines/smoke-test', parameters: [string(name: 'SHA1', value: env.GIT_COMMIT), string(name: 'TEST_ARCH', value: 'All'), string(name: 'WITH_SECURITY', value: 'All')] 24 | } 25 | } 26 | 27 | stage('Archive 3rd Party Images') { 28 | when { 29 | expression { params.ARCHIVE } 30 | } 31 | steps { 32 | edgeXDockerLogin(settingsFile: 'ci-build-images-settings') 33 | bootstrapBuildX() 34 | 35 | script { 36 | def images = sh(script: "grep image docker-compose.yml | grep -v edgexfoundry | awk '{print \$2}'", returnStdout: true).trim() 37 | images.split('\n').each { image -> 38 | sh "echo -e 'FROM ${image}' | docker buildx build --platform 'linux/amd64,linux/arm64' -t nexus3.edgexfoundry.org:10002/archive/${image} --push -" 39 | } 40 | } 41 | } 42 | } 43 | } 44 | post { 45 | always { 46 | edgeXInfraPublish() 47 | } 48 | cleanup { 49 | cleanWs() 50 | } 51 | } 52 | } 53 | 54 | def bootstrapBuildX() { 55 | sh 'docker buildx ls' 56 | sh 'docker buildx create --name edgex-builder --platform linux/amd64,linux/arm64 --use' 57 | sh 'docker buildx inspect --bootstrap' 58 | sh 'docker buildx ls' 59 | } -------------------------------------------------------------------------------- /compose-builder/add-nats-messagebus.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2022 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | volumes: 17 | nats-data: 18 | 19 | services: 20 | nats: 21 | image: nats:${NATS_VERSION} 22 | command: [ "-js" ] 23 | ports: 24 | - "127.0.0.1:4222:4222" 25 | container_name: edgex-nats-server 26 | hostname: edgex-nats-server 27 | read_only: true 28 | restart: always 29 | networks: 30 | - edgex-network 31 | security_opt: 32 | - no-new-privileges:true 33 | user: "root:root" 34 | volumes: 35 | - nats-data:/tmp/nats 36 | 37 | core-common-config-bootstrapper: 38 | environment: 39 | ALL_SERVICES_MESSAGEBUS_TYPE: nats-jetstream 40 | ALL_SERVICES_MESSAGEBUS_PROTOCOL: tcp 41 | ALL_SERVICES_MESSAGEBUS_HOST: edgex-nats-server 42 | ALL_SERVICES_MESSAGEBUS_PORT: "4222" 43 | ALL_SERVICES_MESSAGEBUS_AUTHMODE: none 44 | 45 | rules-engine: 46 | environment: 47 | CONNECTION__EDGEX__NATSMSGBUS__PORT: 4222 48 | CONNECTION__EDGEX__NATSMSGBUS__PROTOCOL: tcp 49 | CONNECTION__EDGEX__NATSMSGBUS__SERVER: edgex-nats-server 50 | CONNECTION__EDGEX__NATSMSGBUS__TYPE: nats-jetstream 51 | CONNECTION__EDGEX__NATSMSGBUS__OPTIONAL__CLIENTID: kuiper-rules-engine 52 | EDGEX__DEFAULT__PORT: 4222 53 | EDGEX__DEFAULT__PROTOCOL: tcp 54 | EDGEX__DEFAULT__SERVER: edgex-nats-server 55 | EDGEX__DEFAULT__TYPE: nats-jetstream 56 | EDGEX__DEFAULT__TOPIC: edgex/rules-events 57 | EDGEX__DEFAULT__OPTIONAL__CLIENTID: kuiper-rules-engine 58 | depends_on: 59 | - nats 60 | -------------------------------------------------------------------------------- /compose-builder/.env: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2022 Intel 3 | # * Copyright 2024 IOTech Ltd 4 | # * 5 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 6 | # * in compliance with the License. You may obtain a copy of the License at 7 | # * 8 | # * http://www.apache.org/licenses/LICENSE-2.0 9 | # * 10 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 11 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 | # * or implied. See the License for the specific language governing permissions and limitations under 13 | # * the License. 14 | # * 15 | # *******************************************************************************/ 16 | # 17 | # This file contains the registry and image versions variables referenced in compose files. 18 | # Docker compose implicitly use the ".env" file, if it exists, so you will not see it referenced in the compose files. 19 | # It is referenced in the Makefile so that it can also use these settings. 20 | # 21 | 22 | RELEASE_FOLDER=../ 23 | CORE_EDGEX_REPOSITORY=nexus3.edgexfoundry.org:10004 24 | APP_SVC_REPOSITORY=nexus3.edgexfoundry.org:10004 25 | DEVICE_SVC_REPOSITORY=nexus3.edgexfoundry.org:10004 26 | UI_REPOSITORY=nexus3.edgexfoundry.org:10004 27 | CORE_EDGEX_VERSION=latest 28 | APP_SERVICE_CONFIG_VERSION=latest 29 | APP_LLRP_VERSION=latest 30 | APP_RECORD_REPLAY_VERSION=latest 31 | EDGEX_UI_VERSION=latest 32 | DEVICE_BACNET_VERSION=latest 33 | DEVICE_MODBUS_VERSION=latest 34 | DEVICE_MQTT_VERSION=latest 35 | DEVICE_REST_VERSION=latest 36 | DEVICE_SNMP_VERSION=latest 37 | DEVICE_VIRTUAL_VERSION=latest 38 | DEVICE_LLRP_VERSION=latest 39 | DEVICE_COAP_VERSION=latest 40 | DEVICE_GPIO_VERSION=latest 41 | DEVICE_UART_VERSION=latest 42 | DEVICE_ONVIFCAM_VERSION=latest 43 | DEVICE_USBCAM_VERSION=latest 44 | DEVICE_S7_VERSION=latest 45 | DEVICE_OPCUA_VERSION=latest 46 | DEVICE_CAN_VERSION=latest 47 | 48 | BAO_VERSION=2.4 49 | POSTGRES_VERSION=18.1-alpine 50 | KUIPER_VERSION=2.3-alpine 51 | MOSQUITTO_VERSION=2.0 52 | NANOMQ_VERSION=0.24 53 | NATS_VERSION=2.12-alpine 54 | NGINX_VERSION=1.29-alpine-slim 55 | EDGEX_USER=2002 56 | EDGEX_GROUP=2001 57 | 58 | CP_FLAGS='-cp=keeper.http://edgex-core-keeper:59890' 59 | DATABASE_HOST=edgex-postgres 60 | DATABASE_PORT=5432 61 | MESSAGEBUS_HOST=edgex-mqtt-broker 62 | MESSAGEBUS_SECRETNAME=message-bus 63 | MESSAGEBUS_AUTHMODE=usernamepassword 64 | MESSAGEBUS_PORT=1883 65 | MESSAGEBUS_PROTOCOL=tcp 66 | MESSAGEBUS_TYPE=mqtt 67 | -------------------------------------------------------------------------------- /compose-builder/upload-api-gateway-cert.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # /******************************************************************************* 3 | # * Copyright 2022 Intel Corporation. 4 | # * 5 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 6 | # * in compliance with the License. You may obtain a copy of the License at 7 | # * 8 | # * http://www.apache.org/licenses/LICENSE-2.0 9 | # * 10 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 11 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 | # * or implied. See the License for the specific language governing permissions and limitations under 13 | # * the License. 14 | # *******************************************************************************/ 15 | 16 | 17 | # usage function for uploading tls cert: 18 | usage() 19 | { 20 | echo "Usage: CERT_INPUT_FILE= KEY_INPUT_FILE= ./upload-api-gateway-cert.sh" 21 | echo "\tBoth CERT_INPUT_FILE and KEY_INPUT_FILE are required." 22 | exit 1 23 | } 24 | 25 | # DEV and ARCH are set in environment prior to calling script 26 | # example: DEV=-dev ARCH=-arm64 ./upload-api-gateway-cert.sh 27 | 28 | # versions are loaded from .env file 29 | . ./.env 30 | 31 | if [ "x$DEV" = "x-dev" ]; then 32 | export CORE_EDGEX_REPOSITORY=edgexfoundry 33 | export CORE_EDGEX_VERSION=0.0.0-dev 34 | fi 35 | 36 | # required input sanity checks 37 | if [ "$CERT_INPUT_FILE" = "" ]; then 38 | echo "Missing env parameter: CERT_INPUT_FILE" 39 | usage 40 | fi 41 | if [ "$KEY_INPUT_FILE" = "" ]; then 42 | echo "Missing env parameter: KEY_INPUT_FILE" 43 | usage 44 | fi 45 | 46 | # staging the input files into temporary files 47 | STAGING="staging-cert" 48 | rm -rf ${STAGING} 49 | mkdir -p ${STAGING} 50 | 51 | cp ${CERT_INPUT_FILE} ${STAGING} 52 | cp ${KEY_INPUT_FILE} ${STAGING} 53 | 54 | CERT_FILE_NAME=$(basename ${CERT_INPUT_FILE}) 55 | KEY_FILE_NAME=$(basename ${KEY_INPUT_FILE}) 56 | 57 | echo "Uploading API Gateway TLS certificate with certificate file: ${CERT_FILE_NAME}, key file: ${KEY_FILE_NAME}" 58 | docker run --rm -it --network edgex_edgex-network --entrypoint "" -v ${PWD}/${STAGING}:/${STAGING} -v edgex_nginx-tls:/etc/ssl/nginx \ 59 | ${CORE_EDGEX_REPOSITORY}/security-proxy-setup${ARCH}:${CORE_EDGEX_VERSION} \ 60 | /edgex/secrets-config proxy tls --inCert /${STAGING}/${CERT_FILE_NAME} \ 61 | --inKey /${STAGING}/${KEY_FILE_NAME} 62 | 63 | docker exec edgex-nginx nginx -s reload 64 | 65 | if [ $? = 0 ]; then 66 | echo "API Gateway TLS certificate uploaded" 67 | else 68 | echo "Failed to upload API Gateway TLS certificate" 69 | fi 70 | 71 | rm -rf ${STAGING} 72 | -------------------------------------------------------------------------------- /compose-builder/add-taf-app-services.yml: -------------------------------------------------------------------------------- 1 | # /******************************************************************************* 2 | # * Copyright 2024 Intel Corporation. 3 | # * 4 | # * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5 | # * in compliance with the License. You may obtain a copy of the License at 6 | # * 7 | # * http://www.apache.org/licenses/LICENSE-2.0 8 | # * 9 | # * Unless required by applicable law or agreed to in writing, software distributed under the License 10 | # * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11 | # * or implied. See the License for the specific language governing permissions and limitations under 12 | # * the License. 13 | # * 14 | # *******************************************************************************/ 15 | 16 | services: 17 | app-functional-tests: 18 | image: ${APP_SVC_REPOSITORY}/app-service-configurable${ARCH}:${APP_SERVICE_CONFIG_VERSION} 19 | command: "--registry ${CP_FLAGS}" 20 | ports: 21 | - 59705:59705/tcp 22 | container_name: edgex-app-functional-tests 23 | hostname: edgex-app-functional-tests 24 | env_file: 25 | - common-non-security.env 26 | environment: 27 | EDGEX_PROFILE: functional-tests 28 | SERVICE_HOST: edgex-app-functional-tests 29 | depends_on: 30 | - core-keeper 31 | - core-metadata 32 | - core-common-config-bootstrapper 33 | read_only: true 34 | networks: 35 | - edgex-network 36 | security_opt: 37 | - no-new-privileges:true 38 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 39 | volumes: 40 | # use host timezone 41 | - /etc/localtime:/etc/localtime:ro 42 | 43 | app-scalability-test-mqtt-export: 44 | image: ${APP_SVC_REPOSITORY}/app-service-configurable${ARCH}:${APP_SERVICE_CONFIG_VERSION} 45 | command: "--registry ${CP_FLAGS}" 46 | ports: 47 | - "59710:59703" #Exposing as different port to avoid conflict with other MQTT export instance 48 | container_name: edgex-app-scalability-test-mqtt-export 49 | hostname: edgex-app-scalability-test-mqtt-export 50 | env_file: 51 | - common-non-security.env 52 | environment: 53 | EDGEX_PROFILE: mqtt-export 54 | EDGEX_SERVICE_KEY: app-scalability-test-mqtt-export 55 | SERVICE_HOST: edgex-app-scalability-test-mqtt-export 56 | WRITABLE_PIPELINE_FUNCTIONS_MQTTEXPORT_PARAMETERS_CLIENTID: app-scalability-test-mqtt-export 57 | WRITABLE_PIPELINE_FUNCTIONS_MQTTEXPORT_PARAMETERS_BROKERADDRESS: MQTT_BROKER_ADDRESS_PLACE_HOLDER 58 | WRITABLE_PIPELINE_FUNCTIONS_MQTTEXPORT_PARAMETERS_TOPIC: edgex-events 59 | 60 | MESSAGEBUS_OPTIONAL_CLIENTID: app-scalability-test-mqtt-export 61 | WRITABLE_LOGLEVEL: DEBUG 62 | depends_on: 63 | - core-keeper 64 | - core-metadata 65 | - core-common-config-bootstrapper 66 | read_only: true 67 | networks: 68 | - edgex-network 69 | security_opt: 70 | - no-new-privileges:true 71 | user: "${EDGEX_USER}:${EDGEX_GROUP}" 72 | volumes: 73 | # use host timezone 74 | - /etc/localtime:/etc/localtime:ro 75 | -------------------------------------------------------------------------------- /.github/Contributing.md: -------------------------------------------------------------------------------- 1 | ## Commit Message Guidelines 2 | 3 | We have very precise rules over how our git commit messages can be formatted. This leads to **more readable messages** that are easy to follow when looking through the **project history**. For full contribution guidelines visit 4 | the [Contributors Guide](https://wiki.edgexfoundry.org/display/FA/Committing+Code+Guidelines#CommittingCodeGuidelines-Commits) on the EdgeX Wiki 5 | 6 | ### Commit Message Format 7 | Each commit message consists of a **header**, a **body** and a **footer**. The header has a special format that includes a **type**, a **scope** and a **subject**: 8 | 9 | ``` 10 | (): 11 | 12 | 13 | 14 |