docker compose, vagrant and insecure Repository

2.1k views Asked by At

I have setup docker-compose to pull my image from a custom repository.

Here is how the yaml file looks like

my_service:
  image: d-myrepo:5000/mycompany/my_service:latest
  ports:
    - "8079:8079"

Now if I run vagrant up, it gets errors

==> default: File "/code/build/docker-compose/out00-PYZ.pyz/docker.auth.auth", line 46, in expand_registry_url ==> default: docker.errors ==> default: . ==> default: DockerException ==> default: : ==> default: HTTPS endpoint unresponsive and insecure mode isn't enabled. The following SSH command responded with a non-zero exit status. Vagrant assumes that this means the command failed!

/usr/local/bin/docker-compose -f "/vagrant/docker-compose.yml" up -d

Stdout from the command:



Stderr from the command:

stdin: is not a tty
Creating vagrant_y2y_1...
Pulling image d-myrepo:5000/mycompany/my_service:latest...
Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.main", line 31, in main
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.docopt_command", line 21, in sys_dispatch
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.command", line 27, in dispatch
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.docopt_command", line 24, in dispatch
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.command", line 59, in perform_command
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.cli.main", line 464, in up
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.project", line 208, in up
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.service", line 214, in recreate_containers
  File "/code/build/docker-compose/out00-PYZ.pyz/compose.service", line 197, in create_container
  File "/code/build/docker-compose/out00-PYZ.pyz/docker.client", line 710, in pull
  File "/code/build/docker-compose/out00-PYZ.pyz/docker.auth.auth", line 67, in resolve_repository_name
  File "/code/build/docker-compose/out00-PYZ.pyz/docker.auth.auth", line 46, in expand_registry_url
docker.errors.DockerException: HTTPS endpoint unresponsive and insecure mode isn't enabled.

I read about it on the internet, that it has to do with having an insecure repo.

It only works, only if I edit the file

/etc/default/docker

with content

DOCKER_OPTS="-r=true --insecure-registry d-myrepo:5000 ${DOCKER_OPTS}"

restart the docker service and manually pull the image. i.e.

docker pull d-myrepo:5000/mycompany/my_service:latest

Is there a way to avoid this error? and having the provisioning running smoothly? maybe I am missing an option inside the docker-composer.yml file?

1

There are 1 answers

1
Confidence On BEST ANSWER

thanks for your feedack, the best way to achieve this is to set the vagrant provisioning the following way

  config.vm.provision :docker
  config.vm.provision :docker_compose
  config.vm.provision "shell", path: "provision.sh", privileged: false

while the shell script provision.sh would include the following relevant lines.

sudo echo "DOCKER_OPTS=\"-r=true --insecure-registry my_repo:5000 \${DOCKER_OPTS}\"" | sudo tee /etc/default/docker
sudo  service docker restart
sudo /usr/local/bin/docker-compose -f /vagrant/docker-compose.yml up -d --allow-insecure-ssl