diff --git a/bin/start-ds.sh b/bin/start-ds.sh
index a48b0b4554cd2ef9380cbc482b07edfc38203043..9485820209750ad155752a35f09186658a78e3c2 100755
--- a/bin/start-ds.sh
+++ b/bin/start-ds.sh
@@ -35,7 +35,7 @@ else
   mkdir -p /tmp/tangostationcontrol
   python3 setup.py build --build-base /tmp/tangostationcontrol egg_info --egg-base /tmp/tangostationcontrol bdist_wheel --dist-dir /tmp/tangostationcontrol || exit 1
   # shellcheck disable=SC2012
-  sudo pip install --force-reinstall "$(ls -Art /tmp/tangostationcontrol/*.whl | tail -n 1)"
+  sudo pip install "$(ls -Art /tmp/tangostationcontrol/*.whl | tail -n 1)"
 fi
 
 # Return to the stored the directory, this preserves the working_dir argument in
diff --git a/docker-compose/device-apsct.yml b/docker-compose/device-apsct.yml
index a23e8a0a1a9dab234e21b1d4153428fcddda5ee3..b23c2f41191a5823711917d01a677d2893ca6cef 100644
--- a/docker-compose/device-apsct.yml
+++ b/docker-compose/device-apsct.yml
@@ -18,7 +18,8 @@ services:
     # build explicitly, as docker-compose does not understand a local image
     # being shared among services.
     build:
-        context: lofar-device-base
+        context: ..
+        dockerfile: docker-compose/lofar-device-base/Dockerfile
         args:
             SOURCE_IMAGE: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-itango:${TANGO_ITANGO_VERSION}
     container_name: ${CONTAINER_NAME_PREFIX}device-apsct
diff --git a/docker-compose/device-apspu.yml b/docker-compose/device-apspu.yml
index 9fbdda2ce469803b9feb9ab8b56945565ffe06ed..f8c4c67184591ced85a23945edfae1842f528b43 100644
--- a/docker-compose/device-apspu.yml
+++ b/docker-compose/device-apspu.yml
@@ -18,7 +18,8 @@ services:
     # build explicitly, as docker-compose does not understand a local image
     # being shared among services.
     build:
-        context: lofar-device-base
+        context: ..
+        dockerfile: docker-compose/lofar-device-base/Dockerfile
         args:
             SOURCE_IMAGE: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-itango:${TANGO_ITANGO_VERSION}
     container_name: ${CONTAINER_NAME_PREFIX}device-apspu
diff --git a/docker-compose/device-beam.yml b/docker-compose/device-beam.yml
index 4b765f96ae8706706dd4faf863fd43a2b32fd470..6a276157f5593fcfe5bd90f1b231ccf0560b37e4 100644
--- a/docker-compose/device-beam.yml
+++ b/docker-compose/device-beam.yml
@@ -13,7 +13,8 @@ services:
     # build explicitly, as docker-compose does not understand a local image
     # being shared among services.
     build:
-        context: lofar-device-base
+        context: ..
+        dockerfile: docker-compose/lofar-device-base/Dockerfile
         args:
             SOURCE_IMAGE: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}-tango-itango:${TANGO_ITANGO_VERSION}
     container_name: ${CONTAINER_NAME_PREFIX}device-beam
diff --git a/docker-compose/device-boot.yml b/docker-compose/device-boot.yml
index abbce963a91efa5d86eac045e9c8746db475af72..339b88f4d6462de4b29c1efa232a822177d54a29 100644
--- a/docker-compose/device-boot.yml
+++ b/docker-compose/device-boot.yml
@@ -17,7 +17,8 @@ services:
     # build explicitly, as docker-compose does not understand a local image
     # being shared among services.
     build:
-        context: lofar-device-base
+        context: ..
+        dockerfile: docker-compose/lofar-device-base/Dockerfile
         args:
             SOURCE_IMAGE: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-itango:${TANGO_ITANGO_VERSION}
     container_name: ${CONTAINER_NAME_PREFIX}device-boot
diff --git a/docker-compose/device-docker.yml b/docker-compose/device-docker.yml
index ae73d963de393e3aa3ba1e0520134acc5dfa1aa1..7cb990b97744af5d14df2b486263575788ac5061 100644
--- a/docker-compose/device-docker.yml
+++ b/docker-compose/device-docker.yml
@@ -18,7 +18,8 @@ services:
     # build explicitly, as docker-compose does not understand a local image
     # being shared among services.
     build:
-        context: lofar-device-base
+        context: ..
+        dockerfile: docker-compose/lofar-device-base/Dockerfile
         args:
             SOURCE_IMAGE: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-itango:${TANGO_ITANGO_VERSION}
     container_name: ${CONTAINER_NAME_PREFIX}device-docker
diff --git a/docker-compose/device-observation_control.yml b/docker-compose/device-observation_control.yml
index 2a77d0e5cdc6657260deabfb36f40c646ebf8809..3887560cdc3875e6aa95b1182f9a8b5c30162dcd 100644
--- a/docker-compose/device-observation_control.yml
+++ b/docker-compose/device-observation_control.yml
@@ -17,7 +17,8 @@ services:
     # build explicitly, as docker-compose does not understand a local image
     # being shared among services.
     build:
-        context: lofar-device-base
+        context: ..
+        dockerfile: docker-compose/lofar-device-base/Dockerfile
         args:
             SOURCE_IMAGE: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-itango:${TANGO_ITANGO_VERSION}
     container_name: ${CONTAINER_NAME_PREFIX}device-observation_control
diff --git a/docker-compose/device-recv.yml b/docker-compose/device-recv.yml
index 0a42904ce8637322df33622a7952cdbb0de746ba..0c4741ca4f3e37303462db29ff7851945f0c2069 100644
--- a/docker-compose/device-recv.yml
+++ b/docker-compose/device-recv.yml
@@ -18,7 +18,8 @@ services:
     # build explicitly, as docker-compose does not understand a local image
     # being shared among services.
     build:
-        context: lofar-device-base
+        context: ..
+        dockerfile: docker-compose/lofar-device-base/Dockerfile
         args:
             SOURCE_IMAGE: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-itango:${TANGO_ITANGO_VERSION}
     container_name: ${CONTAINER_NAME_PREFIX}device-recv
diff --git a/docker-compose/device-sdp.yml b/docker-compose/device-sdp.yml
index 1f3967d6507a4be7eef77e88b5a9aeecd4bfb461..0e54304ed6ac5313390020ef985e051a2effc42d 100644
--- a/docker-compose/device-sdp.yml
+++ b/docker-compose/device-sdp.yml
@@ -18,7 +18,8 @@ services:
     # build explicitly, as docker-compose does not understand a local image
     # being shared among services.
     build:
-        context: lofar-device-base
+        context: ..
+        dockerfile: docker-compose/lofar-device-base/Dockerfile
         args:
             SOURCE_IMAGE: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-itango:${TANGO_ITANGO_VERSION}
     container_name: ${CONTAINER_NAME_PREFIX}device-sdp
diff --git a/docker-compose/device-sst.yml b/docker-compose/device-sst.yml
index 4e600ef419fd6149e4ab7a0a7e527acac53369d0..10057ee969cc2d3c66b0b59fcfb81b3f8b67b331 100644
--- a/docker-compose/device-sst.yml
+++ b/docker-compose/device-sst.yml
@@ -18,7 +18,8 @@ services:
     # build explicitly, as docker-compose does not understand a local image
     # being shared among services.
     build:
-        context: lofar-device-base
+        context: ..
+        dockerfile: docker-compose/lofar-device-base/Dockerfile
         args:
             SOURCE_IMAGE: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-itango:${TANGO_ITANGO_VERSION}
     container_name: ${CONTAINER_NAME_PREFIX}device-sst
diff --git a/docker-compose/device-unb2.yml b/docker-compose/device-unb2.yml
index 3939635b26a9dade6caadb5bcdc4f5136ae40866..c5cda24943783ca21b9010bf4ce810276fff24ab 100644
--- a/docker-compose/device-unb2.yml
+++ b/docker-compose/device-unb2.yml
@@ -18,7 +18,8 @@ services:
     # build explicitly, as docker-compose does not understand a local image
     # being shared among services.
     build:
-        context: lofar-device-base
+        context: ..
+        dockerfile: docker-compose/lofar-device-base/Dockerfile
         args:
             SOURCE_IMAGE: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-itango:${TANGO_ITANGO_VERSION}
     container_name: ${CONTAINER_NAME_PREFIX}device-unb2
diff --git a/docker-compose/device-xst.yml b/docker-compose/device-xst.yml
index e2cfd8c7d2e38a6a22b5a20868ee7bea72ef9165..cb7ec371e518cd239c44dd00859618c2ae0936f2 100644
--- a/docker-compose/device-xst.yml
+++ b/docker-compose/device-xst.yml
@@ -18,7 +18,8 @@ services:
     # build explicitly, as docker-compose does not understand a local image
     # being shared among services.
     build:
-        context: lofar-device-base
+        context: ..
+        dockerfile: docker-compose/lofar-device-base/Dockerfile
         args:
             SOURCE_IMAGE: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-itango:${TANGO_ITANGO_VERSION}
     container_name: ${CONTAINER_NAME_PREFIX}device-xst
diff --git a/docker-compose/lofar-device-base.yml b/docker-compose/lofar-device-base.yml
index dddd50c9a01e2e928a1d36c1723a703afd5deaeb..da0a0c5a9495193a830330afdb4d5110e6fa5d07 100644
--- a/docker-compose/lofar-device-base.yml
+++ b/docker-compose/lofar-device-base.yml
@@ -17,7 +17,8 @@ services:
   lofar-device-base:
     image: lofar-device-base
     build:
-        context: lofar-device-base
+        context: ..
+        dockerfile: docker-compose/lofar-device-base/Dockerfile
         args:
             SOURCE_IMAGE: ${LOCAL_DOCKER_REGISTRY_HOST}/${LOCAL_DOCKER_REGISTRY_USER}/tango-itango:${TANGO_ITANGO_VERSION}
     container_name: ${CONTAINER_NAME_PREFIX}lofar-device-base
diff --git a/docker-compose/lofar-device-base/Dockerfile b/docker-compose/lofar-device-base/Dockerfile
index f81445d208272885c579e3da18c3417ca5e7473d..9897528c555aa92edcdf409c1518b53132818cb4 100644
--- a/docker-compose/lofar-device-base/Dockerfile
+++ b/docker-compose/lofar-device-base/Dockerfile
@@ -3,17 +3,20 @@ FROM ${SOURCE_IMAGE}
 
 RUN sudo apt-get update && sudo apt-get install -y git && sudo apt-get clean
 
-COPY lofar-requirements.txt /lofar-requirements.txt
+COPY docker-compose/lofar-device-base/lofar-requirements.txt /lofar-requirements.txt
 RUN sudo pip3 install -r /lofar-requirements.txt
 
+COPY tangostationcontrol/requirements.txt /tangostationcontrol-requirements.txt
+RUN sudo pip3 install -r /tangostationcontrol-requirements.txt
+
 # install and use ephimerides and geodetic ("measures") tables for casacore.
 # we install a _stub_ since the tables need to be deployed explicitly from within the software.
 RUN sudo mkdir -p /opt/IERS && sudo chmod a+rwx /opt/IERS
 ARG IERS_DIRNAME=IERS-1970-01-01T00:00:00-stub
-COPY WSRT_Measures_stub /opt/IERS/${IERS_DIRNAME}
+COPY docker-compose/lofar-device-base/WSRT_Measures_stub /opt/IERS/${IERS_DIRNAME}
 RUN ln -sfT /opt/IERS/${IERS_DIRNAME} /opt/IERS/current
 
-COPY casarc /home/tango/.casarc
+COPY docker-compose/lofar-device-base/casarc /home/tango/.casarc
 
 ENV TANGO_LOG_PATH=/var/log/tango
 RUN sudo mkdir -p /var/log/tango && sudo chmod a+rwx /var/log/tango