Рейтинг:0

Невозможно связать том между контейнером и другим контейнером (docker-in-docker)

флаг cn

Я пытаюсь настроить свой gitlab runner на своем M1 MacBook для тестирования среды. Мой рабочий процесс CI довольно прост: строить -> тестовое задание -> развертывать. Я использую docker executor и для тестирования задач использую docker-compose потому что мне нужно развернуть базу данных рядом со службой, которую я хочу протестировать.

Мой CI отлично работает на EC2 под управлением Ubuntu. Но когда я попытался запустить бегун на macOS, мой том ./backend не был привязан к /app. Я пытался лс /приложение на серверная часть контейнер и с EC2 все файлы и папки здесь, но не когда я запускаю бегун на macOS.

gitlab-ci.yml (это всего лишь бэкэнд_тест часть:

test_backend:
  этап: тест
  потребности: ["build_backend_image"]
  изображение: докер
  Сервисы:
    - докер: дин
  до_скрипта:
    - вход в докер -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
    - DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
    - mkdir -p $DOCKER_CONFIG/cli-плагины
    - apk добавить завиток
    - curl -SL https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
    - chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
  сценарий:
    - docker compose -f docker-compose-ci.yml up -d db
    - docker exec db sh mongo_init.sh
    - docker compose -f docker-compose-ci.yml up -d бэкенд
    - пвд
    - лс
    - бэкенд ls
    - серверная часть docker exec pwd
    - docker exec бэкэнд ls -l
    - docker exec бэкенд ls / -l
    - docker exec backend pip3 install --no-cache-dir --upgrade -r requirements-test.txt
    - docker exec backend pytest test --junitxml=report.xml -p no:cacheprovider
  прерываемый: правда
  артефакты:
    когда: всегда
    отчеты:
      junit: бэкэнд/report.xml
  правила:
    - если: $CI_PIPELINE_SOURCE == 'merge_request_event'
    - если: $CI_COMMIT_BRANCH == 'разработать'
    - если: $CI_COMMIT_BRANCH == 'мастер'

gitlab-бегун/config.toml:

одновременно = 2
контрольный_интервал = 0

[сессионный_сервер]
  session_timeout = 1800


[[бегуны]]
  имя = "Макбук"
  URL-адрес = "https://gitlab.com/"
  токен = "ххххххххх"
  исполнитель = "докер"
  [runners.custom_build_dir]
  [бегунки.кэш]
    [бегуны.кэш.s3]
    [бегуны.cache.gcs]
    [бегунки.cache.azure]
  [бегуны.докер]
    tls_verify = ложь
    изображение = "докер: 20.10.13"
    привилегированный = правда
    disable_entrypoint_overwrite = ложь
    oom_kill_disable = ложь
    отключить_кэш = ложь
    тома = ["/сертификаты/клиент", "/кеш"]
    шм_размер = 0

Выход бегуна EC2 ls:

$ docker exec backend ls /app -l
всего 36
-rw-rw-rw- 1 root root 285 3 июня 15:30 Dockerfile
-rw-rw-rw- 1 root root 325 20 мая 23:49 DockerfileTest
-rw-rw-rw- 1 root root 48 20 мая 23:49 __init__.py
drwxrwxrwx 11 root root 4096 4 июня 17:17 приложение
-rw-rw-rw- 1 root root 4286 4 июня 16:41 favicon.ico
-rw-rw-rw- 1 root root 33 4 июня 16:41 требования-test.txt
-rw-rw-rw- 1 root root 1673 4 июня 16:41 требования.txt
drwxrwxrwx 6 root root 4096 4 июня 16:41 тест

macOS runner ls вывод:

$ docker exec backend ls /app -l
всего 0

докер-compose-ci.yml:

Сервисы:
  серверная часть:
    имя_контейнера: серверная часть
    изображение: $CI_REGISTRY_IMAGE/бэкенд:$CI_COMMIT_SHA
    тома:
      - ./бэкенд:/приложение
    сети:
      По умолчанию:
    порты:
      - 8000:8000
      - 587:587
      - 443:443
    зависит от:
      - дб

  дБ:
    имя_контейнера: БД
    изображение: монго
    тома:
      - ./mongo_init.sh:/mongo_init.sh:ро
    сети:
      По умолчанию:
    среда:
      MONGO_INITDB_DATABASE: ххххххх
      MONGO_INITDB_ROOT_USERNAME: администратор
      MONGO_INITDB_ROOT_PASSWORD: администратор
    порты:
      - 27017:27017


сети:
  По умолчанию:
    водитель: мост

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.