Based on the ONAP community decision to move toward a decoupled versioning and release model (i.e. each project team will version and release their own artifacts on their own schedules), we determined that it makes the most sense for individual project teams to fully manage their own docker image builds. As such, the Integration team will no longer maintain a central docker build process like we did before in OPEN-O.
This is set of recommendations and guidelines for each ONAP project to follow as they work on creating a docker image build process.
Ideally, the docker image build process should be fully separated from the Java/Python artifact build process. This means:
Once we include considerations of the SNAPSHOT/STAGING/RELEASE docker tags, we end up with the following general development/release flow:
The OPEN-O Integration team used to centrally run all the docker image builds using files source controlled under integration.git/test/csit/docker/. A copy of the scripts used in OPEN-O has been placed within ONAP under integration.git/packaging/docker/scripts/. However, the individual image scripts (instance-config.sh, etc.) were not carried over. The OPEN-O docker build process copied those files into the docker build directory, and auto-generated a Dockerfile definition and supporting scripts (e.g. docker-entrypoint.sh) that called those scripts as appropriate.
If you still have a copy of the OPEN-O integration repo available, the best way to migrate from the OPEN-O docker image definition is as follows:
The OPEN-O docker images were created specifically for CSIT only, which is why it was ok to directly incorporate services like MySQL / Redis in the microservice docker images themselves. In ONAP, the docker images are intended to be run for production, so any necessary services should be run as separate docker containers outside your microservice container. So, please define your docker images so that they can have things like MySQL IP addresses passed in from the outside.
The OOM project may place additional requirements on the docker image definitions for things like service discovery, etc. TBD