Vagrant Docker Provider - не может свернуться на локальный хост - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь эмулировать нашу микросервисную инфраструктуру с помощью Vagrant и Docker.У меня есть Vagrant VM, которая служит в качестве шлюза API.В Vagrantfile я использовал настройку Docker для настройки Kong.Моя цель состоит в том, чтобы загрузить необходимые службы Kong при инициализации, используя cURL.

My Vagrantfile:

Vagrant.configure("2") do |config|
  config.vm.hostname = 'apigateway'
  config.vm.box = "centos/7"
  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  config.vm.network "private_network", ip: "192.168.110.110"
  config.vm.synced_folder ".", "/vagrant"
  config.vm.provision "docker" do |docker|
    config.vm.provision "shell" do |sh|
      docker.pull_images "postgres:9.6"
      docker.pull_images "kong"
      docker.run "postgres:9.6",
        image: "postgres:9.6",
        args: "--name kong-db --network='host' -p 5432:5432 -e 'POSTGRES_USER=kong'  -e 'POSTGRES_DB=kong'  -e 'POSTGRES_PASSWORD=kong'",
        auto_assign_name: false
      sh.inline = "firewall-cmd --permanent --add-port=5432/tcp"
      sh.inline = "firewall-cmd --reload"
      docker.run "kong-migrations",
        image: "kong",
        cmd: "kong migrations bootstrap",
        args: "--name kong-migrations --network='host' -e 'KONG_DATABASE=postgres' -e 'KONG_PG_HOST=localhost' -e 'KONG_PG_USER=kong' -e 'KONG_PG_PASSWORD=kong'  -e 'KONG_PG_DATABASE=kong'",
        auto_assign_name: false,
        restart: "on-failure"
      docker.run "kong",
        image: "kong",
        args: "--name kong  --network='host' -p 8000:8000 -p 8443:8443 -p 8001:8001 -p 8444:8444 -e 'KONG_DATABASE=postgres' -e 'KONG_PG_HOST=localhost' -e 'KONG_PG_USER=kong' -e 'KONG_PG_PASSWORD=kong' -e 'KONG_PG_DATABASE=kong' -e 'KONG_ADMIN_LISTEN=127.0.0.1:8001, 127.0.0.1:8444 ssl'",
        auto_assign_name: false
      sh.inline = "firewall-cmd --permanent --add-port=8000/tcp"
      sh.inline = "firewall-cmd --permanent --add-port=8001/tcp"
      sh.inline = "firewall-cmd --permanent --add-port=8443/tcp"
      sh.inline = "firewall-cmd --permanent --add-port=8444/tcp"
      sh.inline = "firewall-cmd --reload"
      ###### The cURL shell scripts that raised the errors #######
      sh.inline = "docker exec kong curl -i -X POST --url http://localhost:8001/services/ --data 'name=admin-api' --data 'url=http://localhost:8001'"
      sh.inline = "docker exec kong curl -i -X POST --url http://localhost:8001/services/admin-api/routes --data 'path=/admin-api'"
      sh.inline = "docker exec kong curl -i -X POST --url http://localhost:8001/services/admin-api/plugins --data 'name=jwt'"
      ####### --End of cURL scripts #####
    end
  end
end

Проблема заключается в том, что сценарии cURL выдают ошибку

default: curl: (7) Failed to connect to localhost port 8001: Connection refused

Однако операция будет успешной, когда я выполню сценарий cURL внутри виртуальной машины после vagrant ssh, то есть

docker exec kong curl -i -X POST --url http://localhost:8001/services/ --data 'name=admin-api' --data 'url=http://localhost:8001'

Я пытался использовать виртуальный IP IP 192.168.110.110 вместо localhost и я получаю Connection reset by peer.

Что не так с этой настройкой?Что должно быть сделано?

1 Ответ

0 голосов
/ 23 мая 2019

Если он работает, когда вы подключаетесь напрямую через ssh после установки, то я предполагаю, что ваш скручивание внутри vagrantfile выполняется слишком быстро.
Может быть, ваш сервер еще не работает, когда вы делаете скручивание. Что произойдет, если вы подождете немного перед сгибанием? Это работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...