Status: Ready for Code Review
Affects Version/s: 6.8.4, 6.8.6, 6.5.15, 6.13.1
Fix Version/s: None
Os: Ubuntu 18.04.1 LTS
Artifactory Docker image: docker.bintray.io/jfrog/artifactory-pro:6.8.6
Artifactory Nginx Docker image: docker.bintray.io/jfrog/nginx-artifactory-pro:6.8.6
Set up according to the JFrog documentation (Installing with Docker)
The JFrog documentation states that Remote Repository replication can be used to fetch and cache remote artifacts into local Artifactory repository cache and by setting the Remote repository as offline, Artifactory should serve the artifacts from local cache and not try to fetch them from the remote.
We have a setup where we have an Artifactory Docker Repository in our DevOps environment that is configured as a Smart Remote Repository in production environment Artifactory. The repository is replicated and we can see the artifacts in production environment Artifactory's cache repository. The images are pulled successfully with docker pull when the connection between local and remote Artifactories exists, but fails when the connection is not available between the two artifactories (error message: "Error response from daemon: manifest for replication-sync-test.localartifactory/os/alpine:latest not found"). The file manifest.json does exist in the local cache. It was also tested that all the artifacts exist in the cache by copying the whole image to another local repository in the production Artifactory and pulling the image from there while the connection between the two artifactories did not exist. There is no difference if the repository is set as Offline or not. Also setting the whole Artifactory as Offline under "General Configuration" does not make any difference. Different parameters have been tried in Smart Remote Repository as well as for replication. This has been tested with versions 6.5.15 (Remote), 6.8.4 (Local) and 6.8.6 (Remote and Local).
In our use case this is a total blocker, because the main purpose of using Artifactory is to be able to replicate a docker repository to a local, isolated environment that does not have continuous network connection to the remote Artifactory.
Steps to reproduce:
- Set up Artifactory and configure a local Docker repository
- Set up another Artifactory and configure a Smart Remote Docker repository and replication
- Replicate the repositories
- Pull a docker image from the local Artifactory docker repository
- Block network connection between the two Artifactories
- Try to pull the same image -> results in error with the "Manifest not found message"