Docker komponieren Hostvolumendaten, die sich nicht im Containerordner befinden

2116
metanerd

Ich versuche, gitlab zu meinem nextcloud vps hinzuzufügen. Wie üblich habe ich Probleme mit den SSL-Zertifikaten. Der Containerordner ist leer, der Hostordner jedoch nicht. Der Hostinhalt wird nicht zum Container-Volume hinzugefügt. Der Containerordner ist leer ( /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") ist fehlgeschlagen (SSL: Fehler: 02001002: Systembibliothek: fopen: Keine solche Datei oder ein solches Verzeichnis : fopen ('/ etc / gitlab / ssl / fullchain.pem', 'r') Fehler: 2006D080: BIO-Routinen: BIO_new_file: keine solche Datei)

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": {} }, 

Vielleicht /etc/gitlabmaskiert das die /etc/gitlab/ssl. Ich habe über Container gelesen, die Host-Dateien maskieren. Das ist alles sehr verwirrend und neu für mich. Wie kann ich dieses Problem debuggen?

0

1 Antwort auf die Frage

0
metanerd

Turns out gitlab just displays nginx error.log always when starting. So ssl certificate was already there and working. I still had problems configuring the port to work with jwilder nginx-proxy. So this is how my last config looks like and works:

symlink the .env with gitlab-docker$ln -s ../.env .env

official docker-compose.yml of nextcloud: ./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 
  • Notice the named volume to access the certs for gitlab(docker volume ls to list volumes, and docker volume inspect $name to display the mountpoint, which in my case is /var/lib/docker/volumes/gitlabdocker_gitcerts/_data).
  • Also notice the specific listen directives for gitlab, credits to those below.

Credits: