diff --git a/docker-compose/Makefile b/docker-compose/Makefile index 87101b3e33fd64de37ce574b85f3484a2d2b518a..e63814ef5b520ef44514b1386e9af26b509389dc 100644 --- a/docker-compose/Makefile +++ b/docker-compose/Makefile @@ -124,13 +124,15 @@ down: ## stop all services and tear down the system $(DOCKER_COMPOSE_ARGS) docker-compose $(COMPOSE_FILE_ARGS) down ifneq ($(NETWORK_MODE),host) docker network inspect $(NETWORK_MODE) &> /dev/null && ([ $$? -eq 0 ] && docker network rm $(NETWORK_MODE)) || true + docker network inspect 9000-$(NETWORK_MODE) &> /dev/null && ([ $$? -eq 0 ] && docker network rm 9000-$(NETWORK_MODE)) || true endif minimal: ## start the base TANGO system ifneq ($(NETWORK_MODE),host) docker network inspect $(NETWORK_MODE) &> /dev/null || ([ $$? -ne 0 ] && docker network create $(NETWORK_MODE)) + docker network inspect 9000-$(NETWORK_MODE) &> /dev/null || ([ $$? -ne 0 ] && docker network create 9000-$(NETWORK_MODE) -o com.docker.network.driver.mtu=9000) endif - $(DOCKER_COMPOSE_ARGS) docker-compose -f tango.yml up -d + $(DOCKER_COMPOSE_ARGS) docker-compose -f tango.yml -f networks.yml up -d start: up ## start a service (usage: make start <servicename>) if [ $(UNAME_S) = Linux ]; then chmod a+r ~/.Xauthority; fi diff --git a/docker-compose/archiver.yml b/docker-compose/archiver.yml index 7aa1c13362c15d5d2a44185e9a6f2e6289a2c056..08d90a113d590a2ebb0e89206cb615048473556f 100644 --- a/docker-compose/archiver.yml +++ b/docker-compose/archiver.yml @@ -4,7 +4,8 @@ services: archiver-maria-db: image: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/mariadb_hdbpp:2021-05-28 container_name: archiver-maria-db - network_mode: ${NETWORK_MODE} + networks: + - control depends_on: - databaseds environment: @@ -18,7 +19,8 @@ services: hdbpp-es: image: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-archiver:2021-05-28 - network_mode: ${NETWORK_MODE} + networks: + - control container_name: hdbpp-es depends_on: - databaseds @@ -35,7 +37,8 @@ services: hdbpp-cm: image: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-archiver:2021-05-28 - network_mode: ${NETWORK_MODE} + networks: + - control container_name: hdbpp-cm depends_on: - databaseds @@ -53,7 +56,8 @@ services: dsconfig: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-dsconfig:1.5.0.6 container_name: dsconfig - network_mode: ${NETWORK_MODE} + networks: + - control depends_on: - databaseds environment: diff --git a/docker-compose/astor.yml b/docker-compose/astor.yml index 747a39c5fef9958cfe9d80fc2afafd25478c09f5..1d86575d48f8a5fdbe1506a1cf7885941181f608 100644 --- a/docker-compose/astor.yml +++ b/docker-compose/astor.yml @@ -15,7 +15,8 @@ services: astor: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-java:9.3.3.2 container_name: ${CONTAINER_NAME_PREFIX}astor - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${XAUTHORITY_MOUNT} environment: @@ -33,7 +34,8 @@ services: starter-example: image: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-starter:2021-05-28 container_name: ${CONTAINER_NAME_PREFIX}starter-example - network_mode: ${NETWORK_MODE} + networks: + - control # set the hostname, otherwise duplicate device registrations result every # time the hostname changes as the container is restarted. hostname: starter-example diff --git a/docker-compose/device-pcc.yml b/docker-compose/device-pcc.yml index 47f2c9b22089e1162e9ca10737ea11aa27a4b32c..5439161cd0797b7f3e014802cb7620ba7c8dcdfb 100644 --- a/docker-compose/device-pcc.yml +++ b/docker-compose/device-pcc.yml @@ -22,7 +22,8 @@ services: args: SOURCE_IMAGE: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-itango:9.3.3.7 container_name: ${CONTAINER_NAME_PREFIX}device-pcc - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${TANGO_LOFAR_CONTAINER_MOUNT} environment: diff --git a/docker-compose/device-sdp.yml b/docker-compose/device-sdp.yml index 13288630491032d2cb7f550177dc421c210561b3..5a83a701fd3750a674aea09d110bd6dff58d38d6 100644 --- a/docker-compose/device-sdp.yml +++ b/docker-compose/device-sdp.yml @@ -22,7 +22,8 @@ services: args: SOURCE_IMAGE: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-itango:9.3.3.7 container_name: ${CONTAINER_NAME_PREFIX}device-sdp - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${TANGO_LOFAR_CONTAINER_MOUNT} environment: diff --git a/docker-compose/device-statistics.yml b/docker-compose/device-statistics.yml index c2d450dbdfd97ac450d82dbef27b13d8ffadb393..c3b9d9ff48e81a4694d4f8b7e729a814b923af02 100644 --- a/docker-compose/device-statistics.yml +++ b/docker-compose/device-statistics.yml @@ -22,7 +22,9 @@ services: args: SOURCE_IMAGE: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-itango:9.3.3.7 container_name: ${CONTAINER_NAME_PREFIX}device-statistics - network_mode: ${NETWORK_MODE} + networks: + - control + - data volumes: - ${TANGO_LOFAR_CONTAINER_MOUNT} environment: diff --git a/docker-compose/elk.yml b/docker-compose/elk.yml index 50060566f3824203c4b91e0332f853861ef6c7a4..cce66839b499caa0b8948eaeb0c5cc65176be2c9 100644 --- a/docker-compose/elk.yml +++ b/docker-compose/elk.yml @@ -17,7 +17,8 @@ services: build: context: elk-configure-host container_name: ${CONTAINER_NAME_PREFIX}elk-configure-host - network_mode: ${NETWORK_MODE} + networks: + - control privileged: true elk: @@ -25,7 +26,8 @@ services: build: context: elk container_name: ${CONTAINER_NAME_PREFIX}elk - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - elk-data:/var/lib/elasticsearch ports: diff --git a/docker-compose/hdbpp_viewer.yml b/docker-compose/hdbpp_viewer.yml index c3d10c3ff48df27a3f15bf483743e6d601ce869e..c7a54f7e6b027e96ebae55d0863981fe85541b54 100644 --- a/docker-compose/hdbpp_viewer.yml +++ b/docker-compose/hdbpp_viewer.yml @@ -12,7 +12,8 @@ services: hdbpp-viewer: image: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/hdbpp_viewer:2021-05-28 container_name: ${CONTAINER_NAME_PREFIX}hdbpp-viewer - network_mode: ${NETWORK_MODE} + networks: + - control depends_on: - databaseds - dsconfig diff --git a/docker-compose/itango.yml b/docker-compose/itango.yml index 4af318480763a80170aa7926d477ddda597c5125..cd5283f234606276d9b54e4f4348d306e25597b7 100644 --- a/docker-compose/itango.yml +++ b/docker-compose/itango.yml @@ -19,7 +19,8 @@ services: args: SOURCE_IMAGE: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-itango:9.3.3.7 container_name: ${CONTAINER_NAME_PREFIX}itango - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${TANGO_LOFAR_CONTAINER_MOUNT} - ${HOME}:/hosthome diff --git a/docker-compose/jupyter.yml b/docker-compose/jupyter.yml index 9c4c8053c7d397733a0ba73402eb3ec54b98a9b2..cbd2ab9ce968c0d0e7c512b8467310b02b9dd053 100644 --- a/docker-compose/jupyter.yml +++ b/docker-compose/jupyter.yml @@ -17,7 +17,8 @@ services: CONTAINER_EXECUTION_UID: ${CONTAINER_EXECUTION_UID} SOURCE_IMAGE: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-itango:9.3.3.7 container_name: ${CONTAINER_NAME_PREFIX}jupyter - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${TANGO_LOFAR_CONTAINER_MOUNT} - ${TANGO_LOFAR_LOCAL_DIR}/jupyter-notebooks:/jupyter-notebooks:rw diff --git a/docker-compose/lofar-device-base.yml b/docker-compose/lofar-device-base.yml index 18c8ef36bb028be8bcb92c5fc7e17dd045d36857..2a2cdc4dde93fcc8045361600621fab0ea5bd9f3 100644 --- a/docker-compose/lofar-device-base.yml +++ b/docker-compose/lofar-device-base.yml @@ -20,4 +20,5 @@ services: args: SOURCE_IMAGE: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-itango:9.3.3.7 container_name: ${CONTAINER_NAME_PREFIX}lofar-device-base - network_mode: ${NETWORK_MODE} + networks: + - control diff --git a/docker-compose/logviewer.yml b/docker-compose/logviewer.yml index 0959d8b944c31d1b2ad9cf537037f51d31fe410e..cea36402729fd9157e8c5e572ebca44a602aa6a0 100644 --- a/docker-compose/logviewer.yml +++ b/docker-compose/logviewer.yml @@ -14,7 +14,8 @@ services: logviewer: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-java:9.3.3.2 container_name: ${CONTAINER_NAME_PREFIX}logviewer - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${XAUTHORITY_MOUNT} environment: diff --git a/docker-compose/networks.yml b/docker-compose/networks.yml new file mode 100644 index 0000000000000000000000000000000000000000..bdacc3005a15a91a5120790e4ac288dacd54030a --- /dev/null +++ b/docker-compose/networks.yml @@ -0,0 +1,24 @@ +# +# Docker compose file that describes our docker networks. +# +version: '3.5' + +networks: + + # Control network, with MTU=1500. Our default network. + control: + name: ${NETWORK_MODE} + # The networks are created and destroyed in the Makefile. + external: true + + # Data network, with MTU=9000, to receive the Jumbo frames from SDP + data: + # This name needs to be alphabetically before the control network. + # + # As we add the data-receiving devices to both control and data + # network, we need to make sure the UDP data are forwarded to + # the data network, not the control network. The way Docker decides + # which network to actually expose ports on is by chosing the + # first one in alphabetical order. + name: 9000-${NETWORK_MODE} + external: true diff --git a/docker-compose/pogo.yml b/docker-compose/pogo.yml index 85bf0ef3d9bcbf962f501d4bbca22227820e42aa..6f87f640a2977b53a4b5ed27d98c2cfd5ccca68a 100644 --- a/docker-compose/pogo.yml +++ b/docker-compose/pogo.yml @@ -22,7 +22,8 @@ services: pogo: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-pogo:9.6.31.2 container_name: ${CONTAINER_NAME_PREFIX}pogo - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - pogo:/home/tango - ${XAUTHORITY_MOUNT} diff --git a/docker-compose/pypcc-sim.yml b/docker-compose/pypcc-sim.yml index d1c47c0465affd6b7bcb2de27dfa340c48e681ce..15739d3f4dcfada169a4bb6f9ee568da612d2259 100644 --- a/docker-compose/pypcc-sim.yml +++ b/docker-compose/pypcc-sim.yml @@ -11,7 +11,8 @@ services: build: context: pypcc-sim container_name: ${CONTAINER_NAME_PREFIX}pypcc-sim - network_mode: ${NETWORK_MODE} + networks: + - control volumes: - ${HOME}:/hosthome ports: diff --git a/docker-compose/rest.yml b/docker-compose/rest.yml index 4019b9fddb4f8801db6922c9afa559d1e581e2ee..f5bfbd329d6223f578c6bd5ea1b255a69527b64c 100644 --- a/docker-compose/rest.yml +++ b/docker-compose/rest.yml @@ -15,7 +15,8 @@ services: rest: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-rest:1.14.1.2 container_name: ${CONTAINER_NAME_PREFIX}tango-rest - network_mode: ${NETWORK_MODE} + networks: + - control # set the hostname, otherwise duplicate device registrations result every # time the hostname changes as the container is restarted. hostname: tango-rest diff --git a/docker-compose/sdptr-sim.yml b/docker-compose/sdptr-sim.yml index 677433019a9e7031ed55fb7e1f94591457a6d74a..70c1edf63acdf84df8a7d294aa17ea9489c9b9a7 100644 --- a/docker-compose/sdptr-sim.yml +++ b/docker-compose/sdptr-sim.yml @@ -11,7 +11,8 @@ services: build: context: sdptr-sim container_name: ${CONTAINER_NAME_PREFIX}sdptr-sim - network_mode: ${NETWORK_MODE} + networks: + - control ports: - "4840:4840" restart: on-failure diff --git a/docker-compose/tango.yml b/docker-compose/tango.yml index 2e2494ff9ff08e326ac0b68a449dd70ae2811a86..0cde93b0c9b6690d48f427d5b31afa399b150022 100644 --- a/docker-compose/tango.yml +++ b/docker-compose/tango.yml @@ -17,7 +17,8 @@ services: tangodb: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-db:10.4.10 container_name: ${CONTAINER_NAME_PREFIX}tangodb - network_mode: ${NETWORK_MODE} + networks: + - control environment: - MYSQL_ROOT_PASSWORD=secret - MYSQL_DATABASE=tango @@ -32,7 +33,8 @@ services: databaseds: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-cpp:9.3.4.2 container_name: ${CONTAINER_NAME_PREFIX}databaseds - network_mode: ${NETWORK_MODE} + networks: + - control ports: - "10000:10000" depends_on: diff --git a/docker-compose/tangotest.yml b/docker-compose/tangotest.yml index 707b1cb7ce182792974df28f1fdbff5fab4702a7..30e0575026f3f203e6da739c9538432efad99ce3 100644 --- a/docker-compose/tangotest.yml +++ b/docker-compose/tangotest.yml @@ -13,7 +13,8 @@ services: tangotest: image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-java:9.3.3.2 container_name: ${CONTAINER_NAME_PREFIX}tangotest - network_mode: ${NETWORK_MODE} + networks: + - control environment: - TANGO_HOST=${TANGO_HOST} entrypoint: