Как запустить CURL внутри Gitlab CI - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь использовать Gitlab CI для создания docker Nginx образа, затем запустить и протестировать контейнер, вызвав cURL на домене этого контейнера: PORT, например:

.gitlab-ci.yml :

variables:
  IMAGE_NAME: docker_curl_sandbox_img
  CONTAINER_NAME: docker_curl_sandbox_cont

image: docker:latest

services:
  - docker:dind

stages:
  - build
  - test

build_docker_img:
  stage: build
  only:
    - master
  script:
    - docker build -t $IMAGE_NAME .

test_run_docker:
  stage: test
  only:
    - master
  before_script:
    - apk add --update curl && rm -rf /var/cache/apk/*
  script:
    - docker kill $CONTAINER_NAME || true
    - docker rm $CONTAINER_NAME || true
    - docker run -p 8087:80 --name $CONTAINER_NAME -d $IMAGE_NAME
    - sleep 25
    - docker ps
    - cat /etc/hosts
    - curl http://docker:8087

Dockerfile:

FROM nginx
COPY ./src /usr/share/nginx/html

Я пробовал: curl http://docker:8087, curl http://0.0.0.0:8087, curl http://localhost:8087, ... Я пробовал домены из /etc/hosts с не повезло:

enter image description here

но я продолжаю получать: curl: (7) Failed to connect to 0.0.0.0 port 8087: Connection refused

enter image description here

есть идеи? спасибо


Обновление: добавление результатов docker ps и netstat -na:

enter image description here

1 Ответ

0 голосов
/ 12 февраля 2020

(отредактировано)

URL http://0.0.0.0:8087 недействителен, поэтому в соединении отказано. См. В чем разница между 0.0.0.0, 127.0.0.1 и localhost?

Используйте netstat -na|grep 8087 на хосте docker, чтобы проверить, где / если прослушивается соединение nginx .

Чтобы получить доступ к другому, не связанному контейнеру, вам нужно перенаправить через переадресацию портов: попробуйте получить к нему доступ с внешнего адреса хоста docker (ie: curl http://192.168.1.2:8087).

...