Pull to refresh
0
0
Send message

Даже если у вас Runner развернут на сервере по соседству с приложением, у вас нет возможности (мы не нашли способа) обратиться наружу.


Есть возможность, мы же для того и пробрасываем docker.sock хост машины внутрь runner: "/var/run/docker.sock:/var/run/docker.sock" .

Тоже недавно на проекте настраивали CI через гитлаб и выбрали способ разрветки, когда runner находится на сервере по соседству.
Важно при регистрации раннера default image docker:dind, либо же указывать это в самом CI на deploy stage.
Вот так выглядит ci скрипт.

variables:
  MAVEN_OPTS: >-
    -Dmaven.repo.local=$CI_PROJECT_DIR/svc/.m2/repository
  MAVEN_CLI_OPTS: >-
    -DskipTests
stages:
  - backend
  - docker-compose

cache:
  paths:
    - svc/target/backend-0.0.1-SNAPSHOT.jar
    - svc/.m2/

build-JAR:
  stage: backend
  image: eclipse-temurin:17
  script:
    - echo "Start building image for branch [$CI_COMMIT_REF_NAME]"
    - cd svc
    - ./mvnw clean package $MAVEN_CLI_OPTS
  rules:
    - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
      when: never
    - if: '$CI_COMMIT_MESSAGE =~ /.*deploy.*/'
      when: on_success
    - when: manual

deploy:
  stage: docker-compose
  image: docker:dind
  script:
    - cd svc
    - docker compose up --build -d
    - docker rmi $(docker images -f "dangling=true" -q)
  rules:
    - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
      when: never
    - when: on_success
  needs:
    - build-JAR

В deploy stage, раннер через докер клиент обращается к хостовому докер демону и на нём запускает наше приложение.

Information

Rating
Does not participate
Registered
Activity