CI / CD с DIND и docker -compose не связывает объемы, потому что контейнер DIND удаляется после конвейера - PullRequest
0 голосов
/ 10 января 2020

Некоторое время я пытаюсь исправить интеграцию CI с gitlab runner. Мой бегун настроен на использование Docker для задач, и поэтому создается контейнер dind для автоматизации создания и развертывания образа с помощью CI / CD. На моей рабочей станции, когда я выполняю вручную docker -compose, развертывание работает. Когда мой бегун делает это, контейнер с клубом ломается и не встает.

  version: '3.7'
    services:
      blub:
        container_name: blub
        image: blub:staging
        privileged: true
        volumes:
          - ./:/code/blub
          - /var/docker/blub/settings:/code/blub/blub/settings
          - static_files:/code/static
          - media_files:/code/media
        depends_on:
          - postgres
        environment:
          DJANGO_ENV: production
        command: gunicorn blub.wsgi:application --bind 0.0.0.0:8000 --workers 3

      postgres:
        container_name: blub-postgres
        image: postgres
        restart: unless-stopped
        environment:   # will be used by the init script
          LC_ALL: C.UTF-8
          POSTGRES_USER: blub
          POSTGRES_PASSWORD: thisisreal!
          POSTGRES_DB: blub
        volumes:
          - postgres_data:/var/postgres/data/blub

      nginx:
        container_name: blub-nginx
        image: nginx
        ports:
          - 8000
        volumes:
          - ./nginx-blub.conf:/etc/nginx/conf.d/default.conf
          - static_files:/var/www/static
          - media_files:/var/www/media
        depends_on:
          - blub

    volumes:
      static_files:
      media_files:
      postgres_data:

I guess the issues are coming from the volumes I try to bind, for example:

      volumes:
        - ./:/code/blub

Потому что, когда я пытаюсь отладить сломанный контейнер, я вижу, что внутри / code / blub нет содержимого, хотя я ожидаю, что вся структура кода из моего репозитория там.

Я уже много чего перепробовал, у меня заканчиваются идеи. Может быть, у кого-то есть ответ. Появляется сообщение об ошибке, когда я отлаживаю мои машины blub, что подтверждает мое расследование относительно пустой папки, которая должна быть заполнена исходным кодом et c.:

[2020-01-09 22:24:51 +0000] [1] [INFO] Starting gunicorn 20.0.4
[2020-01-09 22:24:51 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
[2020-01-09 22:24:51 +0000] [1] [INFO] Using worker: sync
[2020-01-09 22:24:51 +0000] [8] [INFO] Booting worker with pid: 8
[2020-01-09 22:24:51 +0000] [8] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
    worker.init_process()
  File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 119, in init_process
    self.load_wsgi()
  File "/usr/local/lib/python3.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/usr/local/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
    return self.load_wsgiapp()
  File "/usr/local/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/local/lib/python3.7/site-packages/gunicorn/util.py", line 358, in import_app
    mod = importlib.import_module(module)
  File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'blub.wsgi'
[2020-01-09 22:24:51 +0000] [8] [INFO] Worker exiting (pid: 8)
[2020-01-09 22:24:51 +0000] [1] [INFO] Shutting down: Master
[2020-01-09 22:24:51 +0000] [1] [INFO] Reason: Worker failed to boot.
...