diff --git a/docker-compose/Makefile b/docker-compose/Makefile
index 307e7c0e609fd20a4d78a5353490f95ed6dc0a7f..09eb760123bc4687207609c3ad94c740a72c317c 100644
--- a/docker-compose/Makefile
+++ b/docker-compose/Makefile
@@ -21,6 +21,9 @@ ATTACH_COMPOSE_FILE_ARGS := $(foreach yml,$(filter-out tango.yml,$(COMPOSE_FILES
 # But we allow to overwrite it.
 NETWORK_MODE ?= tangonet
 
+# Host name through which others can reach our control interfaces
+HOSTNAME ?= $(shell hostname -f)
+
 # If the first make argument is "start" or "stop"...
 ifeq (start,$(firstword $(MAKECMDGOALS)))
     SERVICE_TARGET = true
@@ -105,6 +108,7 @@ endif
 DOCKER_COMPOSE_ARGS := DISPLAY=$(DISPLAY) \
     XAUTHORITY=$(XAUTHORITY) \
     TANGO_HOST=$(TANGO_HOST) \
+    HOSTNAME=$(HOSTNAME) \
     NETWORK_MODE=$(NETWORK_MODE) \
     XAUTHORITY_MOUNT=$(XAUTHORITY_MOUNT) \
     TANGO_LOFAR_CONTAINER_MOUNT=$(TANGO_LOFAR_CONTAINER_MOUNT) \
diff --git a/docker-compose/device-pcc.yml b/docker-compose/device-pcc.yml
index 3dc69f20b7aa7a670ed9a7b1e17cb3032b849957..ebf71352df76969e879a5d73f022705a202ab925 100644
--- a/docker-compose/device-pcc.yml
+++ b/docker-compose/device-pcc.yml
@@ -24,6 +24,8 @@ services:
     container_name: ${CONTAINER_NAME_PREFIX}device-pcc
     networks:
       - control
+    ports:
+      - "5700:5700" # unique port for this DS
     volumes:
         - ${TANGO_LOFAR_CONTAINER_MOUNT}
     environment:
@@ -34,5 +36,7 @@ services:
       - --timeout=30
       - --strict
       - --
-      - python3 -u ${TANGO_LOFAR_CONTAINER_DIR}/devices/devices/pcc.py LTS -v
+      # configure CORBA to _listen_ on 0:port, but tell others we're _reachable_ through ${HOSTNAME}:port, since CORBA
+      # can't know about our Docker port forwarding
+      - python3 -u ${TANGO_LOFAR_CONTAINER_DIR}/devices/devices/pcc.py LTS -v -ORBendPoint giop:tcp:0:5700 -ORBendPointPublish giop:tcp:${HOSTNAME}:5700
     restart: on-failure
diff --git a/docker-compose/device-sdp.yml b/docker-compose/device-sdp.yml
index 27d6a33cf94985f18bcbcaafe21078aa7aa92e36..a65bb8ae3e3111ad6c2954b44b9c20a6e8085321 100644
--- a/docker-compose/device-sdp.yml
+++ b/docker-compose/device-sdp.yml
@@ -24,6 +24,8 @@ services:
     container_name: ${CONTAINER_NAME_PREFIX}device-sdp
     networks:
       - control
+    ports:
+      - "5701:5701" # unique port for this DS
     volumes:
         - ${TANGO_LOFAR_CONTAINER_MOUNT}
     environment:
@@ -34,5 +36,7 @@ services:
       - --timeout=30
       - --strict
       - --
-      - python3 -u ${TANGO_LOFAR_CONTAINER_DIR}/devices/devices/sdp/sdp.py LTS -v
+      # configure CORBA to _listen_ on 0:port, but tell others we're _reachable_ through ${HOSTNAME}:port, since CORBA
+      # can't know about our Docker port forwarding
+      - python3 -u ${TANGO_LOFAR_CONTAINER_DIR}/devices/devices/sdp/sdp.py LTS -v -ORBendPoint giop:tcp:0:5701 -ORBendPointPublish giop:tcp:${HOSTNAME}:5701
     restart: on-failure
diff --git a/docker-compose/device-sst.yml b/docker-compose/device-sst.yml
index 7a669cf0a67aea39474f567364b7cf307ecdb558..c620ba206b6091b1544582e62128575fc231b03c 100644
--- a/docker-compose/device-sst.yml
+++ b/docker-compose/device-sst.yml
@@ -26,7 +26,8 @@ services:
         - control
         - data
     ports:
-        - 5001:5001/udp
+        - "5001:5001/udp" # port to receive SST UDP packets on
+        - "5702:5702" # unique port for this DS
     volumes:
         - ${TANGO_LOFAR_CONTAINER_MOUNT}
     environment:
@@ -37,5 +38,7 @@ services:
       - --timeout=30
       - --strict
       - --
-      - python3 -u ${TANGO_LOFAR_CONTAINER_DIR}/devices/devices/sdp/sst.py LTS -v
+      # configure CORBA to _listen_ on 0:port, but tell others we're _reachable_ through ${HOSTNAME}:port, since CORBA
+      # can't know about our Docker port forwarding
+      - python3 -u ${TANGO_LOFAR_CONTAINER_DIR}/devices/devices/sdp/sst.py LTS -v -ORBendPoint giop:tcp:0:5702 -ORBendPointPublish giop:tcp:${HOSTNAME}:5702
     restart: on-failure