Open sbesson opened 6 years ago
Another issue with this set of Docker files was highlighted by the thread in https://github.com/ome/ome-common-cpp/pull/57#issuecomment-398674719.
In addition to the problem of finding these repositories and maintaining them, in the case of coupled PRs across the various C++ components, getting the Docker files building and Travis sucessful becomes complex for little added value.
With the birth of https://github.com/ome/ome-files-build, an alternative proposal would be:
Dockerfile.{c7,u1604}
to the top-level of the ome-files-build
super-repository and let it build the component from the submodules directly to create an image with all the OME Files components (common, model, C++, Qt)Cmake
logic and would require some special handlingOne addition: https://gitlab.com/openmicroscopy/incubator/omero-all (renamed to omero-server-build?) and https://github.com/ome/bio-formats-build/pull/18 should get the same style of Dockerfile(s) (cc @rgozim) including a few design thoughts:
git submodule update --init
within the dockerfile if it wasn't already donescc merge
where branch names differ.git
only when necessary (triggers unnecessary rebuilds)docker build --cache-from
(experimental)
State of the art
Docker images for the OME Files C++ library have been originally developed in decoupled repositories (Ubuntu 16.04, CentOS 7). As we increase the usage of these Docker images for our application development and use it for testing the downstream components (ome-files-performance, ome-qtwidgets, ome-files-py), we might reconsider this strategy.
Proposal
Unlike the OMERO server and OMERO Web Docker images, the OME Files Dockerfile do not require to consume built artifacts but rather build directly the library from the sources. It should be possible to re-use the strategy used byome-files-py and described as follows:
Dockerfile.{c7,u1604}
Dockerfile
should useCOPY .
The table below summarizes the current and proposed locations for the Dockerfiles:
Implementation
The principal technical caveat is that Docker Hub does not allow to switch the source GitHub repository for an existing repositories. Preserving the existing tags of the existing ome-files-cpp-u1604 images might be achievable using the following steps:
Dockerfile{.c7,u1604}
from the decoupled Docker repositorieslatest
imagesopenmicroscopy/ome-files-cpp-docker-{u1604,c7}
repositories as deprecated or delete them and set up GitHub to redirect them toome/ome-files-cpp
Future steps
Immediately, the Docker-based build files would be maintained in sync with the code (which allows to track changes). In the mid-term, we could even have the base OME Files C++ images built and tested in Travis. Doing so probably requires to think the requirements to splitting the ome-model component down into a base image per platform.