Docker создает данные тома хоста не в папке контейнера

1999
metanerd

Я пытаюсь добавить gitlab для моего следующего облака VPS. Как обычно, у меня проблемы с сертификатами ssl. Папка контейнера пуста, а папка хоста - нет. Содержимое хоста не добавляется в том контейнера. Папка контейнера пуста ( /etc/gitlab/ssl).

version: '2' services: proxy: image: jwilder/nginx-proxy container_name: proxy ports: - 80:80 - 443:443 volumes: - ./proxy/conf.d:/etc/nginx/conf.d - ./proxy/vhost.d:/etc/nginx/vhost.d - ./proxy/html:/usr/share/nginx/html - ./proxy/certs:/etc/nginx/certs:ro - /var/run/docker.sock:/tmp/docker.sock:ro networks: - proxy-tier restart: always  letsencrypt-companion: image: alastaircoote/docker-letsencrypt-nginx-proxy-companion container_name: letsencrypt-companion volumes_from: - proxy volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./proxy/certs:/etc/nginx/certs:rw restart: always  web: image: nginx container_name: nextcloud_webserver volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro links: - app - collabora volumes_from: - app environment: - VIRTUAL_HOST=$ - VIRTUAL_NETWORK=nginx-proxy - VIRTUAL_PORT=80 - LETSENCRYPT_HOST=$ - LETSENCRYPT_EMAIL=$ networks: - proxy-tier restart: always  app: image: nextcloud:fpm container_name: nextcloud_fpm links: - db volumes: - ./nextcloud/apps:/var/www/html/apps - ./nextcloud/config:/var/www/html/config - ./nextcloud/data:/var/www/html/data networks: - proxy-tier restart: always  db: image: mariadb container_name: db volumes: - ./nextcloud/db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=$ - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_PASSWORD=$ networks: - proxy-tier restart: always  redis: image: redis container_name: redis networks: - proxy-tier restart: always  collabora: image: collabora/code container_name: collabora cap_add: - MKNOD environment: - domain=$ networks: - proxy-tier restart: always  gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab restart: always hostname: $ environment: VIRTUAL_HOST: $ VIRTUAL_NETWORK: nginx-proxy VIRTUAL_PORT: 80 LETSENCRYPT_HOST: $ LETSENCRYPT_EMAIL: $ GITLAB_OMNIBUS_CONFIG: | external_url "https://$" nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/key.pem" # Add any other gitlab.rb configuration here, each on its own line volumes: - ./gitlab/config:/etc/gitlab - ./gitlab/logs:/var/log/gitlab - ./gitlab/data:/var/opt/gitlab - /opt/nextcloud-docker/.examples/proxy/certs/$:/etc/gitlab/ssl:rw networks: - proxy-tier  networks: proxy-tier: external: name: nginx-proxy 

2017/08/19 09:26:17 [emerg] 6465 # 0: ошибка BIO_new_file ("/ etc / gitlab / ssl / fullchain.pem") (SSL: ошибка: 02001002: системная библиотека: fopen: такого файла или каталога нет : fopen ('/ etc / gitlab / ssl / fullchain.pem', 'r') ошибка: 2006D080: подпрограммы BIO: BIO_new_file: такого файла нет)

docker inspect gitlab

{ "Type": "bind", "Source": "/opt/nextcloud-docker/.examples/proxy/certs/domain", "Destination": "/etc/gitlab/ssl", "Mode": "rw", "RW": true, "Propagation": "rprivate" }  "Volumes": { "/etc/gitlab": {}, "/etc/gitlab/ssl": {}, "/var/log/gitlab": {}, "/var/opt/gitlab": {} }, 

Может быть, это /etc/gitlabмаскирует /etc/gitlab/ssl. Я читал о контейнерах, маскирующих файлы хоста, все это очень запутанно и ново для меня. Как мне отладить эту проблему?

0

1 ответ на вопрос

0
metanerd

Оказывается, gitlab просто отображает nginx error.log всегда при запуске. Так что сертификат ssl уже был там и работает. У меня все еще были проблемы с настройкой порта для работы с jwilder nginx-proxy. Вот так выглядит и работает мой последний конфиг:

символическая ссылка .env с gitlab-docker$ln -s ../.env .env

официальный docker-compose.yml из следующего облака: ./docker-compose.yml

version: '2' services: proxy: image: jwilder/nginx-proxy container_name: proxy ports: - 80:80 - 443:443 volumes: - ./proxy/conf.d:/etc/nginx/conf.d - ./proxy/vhost.d:/etc/nginx/vhost.d - ./proxy/html:/usr/share/nginx/html - ./proxy/certs:/etc/nginx/certs:ro - /var/run/docker.sock:/tmp/docker.sock:ro networks: - proxy-tier restart: always  letsencrypt-companion: image: alastaircoote/docker-letsencrypt-nginx-proxy-companion container_name: letsencrypt-companion volumes_from: - proxy volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./proxy/certs:/etc/nginx/certs:rw restart: always  web: image: nginx container_name: nextcloud_webserver volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro links: - app - collabora volumes_from: - app environment: - VIRTUAL_HOST=$ - VIRTUAL_NETWORK=nginx-proxy - VIRTUAL_PORT=80 - LETSENCRYPT_HOST=$ - LETSENCRYPT_EMAIL=$ networks: - proxy-tier restart: always  app: image: nextcloud:fpm container_name: nextcloud_fpm links: - db volumes: - ./nextcloud/apps:/var/www/html/apps - ./nextcloud/config:/var/www/html/config - ./nextcloud/data:/var/www/html/data networks: - proxy-tier restart: always  db: image: mariadb container_name: db volumes: - ./nextcloud/db:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=$ - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_PASSWORD=$ networks: - proxy-tier restart: always  redis: image: redis container_name: redis networks: - proxy-tier restart: always  collabora: image: collabora/code container_name: collabora cap_add: - MKNOD environment: - domain=$ networks: - proxy-tier restart: always  networks: proxy-tier: external: name: nginx-proxy 

./gitlab-docker/docker-compose.yml

version: '2'  services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab restart: always hostname: $ environment: VIRTUAL_HOST: $ VIRTUAL_NETWORK: nginx-proxy VIRTUAL_PORT: 80 LETSENCRYPT_HOST: $ LETSENCRYPT_EMAIL: $ GITLAB_OMNIBUS_CONFIG: | external_url 'https://$' nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain.pem" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/key.pem" nginx['listen_port'] = 80 nginx['listen_https'] = false nginx['proxy_set_headers'] = { "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on" } # Add any other gitlab.rb configuration here, each on its own line ports: - '3022:22' volumes: - gitcerts:/etc/gitlab/ssl:ro - ../gitlab/config:/etc/gitlab - ../gitlab/logs:/var/log/gitlab - ../gitlab/data:/var/opt/gitlab networks: - proxy-tier  networks: proxy-tier: external: name: nginx-proxy  volumes: gitcerts: driver_opts: type: none device: /opt/nextcloud-docker/.examples/proxy/certs/$ o: bind 
  • Обратите внимание на именованный том для доступа к сертификатам для gitlab (для вывода docker volume lsсписка томов и docker volume inspect $nameдля отображения точки монтирования, которая в моем случае есть /var/lib/docker/volumes/gitlabdocker_gitcerts/_data).
  • Также обратите внимание на конкретные директивы прослушивания для gitlab, кредиты на которые приведены ниже.

Кредиты: