Setting up Apache to work with multiple Docker repositories

JFrog Support
2016-10-06 13:38

To have multiple docker repositories in Artifactory, you’ll need to setup different SSL ports (e.g have several VirtualHosts) on your Apache configuration. For example, your default-ssl.conf file may look similar to this –


<VirtualHost *:443>
ServerName dockerone.com

SSLEngine on
SSLCertificateFile /etc/ssl/certs/docker-registry
SSLCertificateKeyFile /etc/ssl/private/docker-registry.key

ProxyRequests off
ProxyPreserveHost on

ProxyPass / http://localhost:9999/artifactory/api/docker/docker-local/
ProxyPassReverse / http://localhost:9999/artifactory/api/docker/docker-local/
</VirtualHost>

<VirtualHost *:442>
ServerName dockertwo.com

SSLEngine on
SSLCertificateFile /etc/ssl/certs/docker-registry
SSLCertificateKeyFile /etc/ssl/private/docker-registry.key

ProxyRequests off
ProxyPreserveHost on

ProxyPass / http://localhost:9999/artifactory/api/docker/docker-local-2/
ProxyPassReverse / http://localhost:9999/artifactory/api/docker/docker-local-2/
</VirtualHost>

To use a non-standard SSL port on a VirtualHost (like 442 in the above example), it is also required to add this to your /etc/apache2/ports.conf file with –


NameVirtualHost *:442
Listen 442


Finally, you need to setup your .dockercfg to manage your credentials per each of the registries, e.g –

{

"https://localhost:442" : {

"auth" : "YWRtaW46QVAzSEZ4UnFhemhoUzlVV2trTFZCMnNHTmlE",

"email" : ""


},

"https://localhost:443" : {

"auth" : "YWRtaW46QVAzSEZ4UnFhemhoUzlVV2trTFZCMnNHTmlE",

"email" : ""

}

}