未在Docker文件结构中显示的SSL证书或其他文件

我有一个为Gitlab的Docker构build,我创build了一些SSL证书和其他文件,我需要拉入。但是,当我进入容器bash的文件不可见。

gitlab: image: 'gitlab/gitlab-ce:9.1.0-ce.0' restart: always hostname: 'gitlab.example.com' links: - postgresql:postgresql - redis:redis environment: GITLAB_OMNIBUS_CONFIG: | postgresql['enable'] = false gitlab_rails['db_username'] = "gitlab" gitlab_rails['db_password'] = "gitlab" gitlab_rails['db_host'] = "postgresql" gitlab_rails['db_port'] = "5432" gitlab_rails['db_database'] = "gitlabhq_production" gitlab_rails['db_adapter'] = 'postgresql' gitlab_rails['db_encoding'] = 'utf8' redis['enable'] = false gitlab_rails['redis_host'] = 'redis' gitlab_rails['redis_port'] = '6379' external_url 'https://gitlab.example.com:30080' nginx['ssl_certificate'] = '/etc/gitlab/trusted-certs/gitlab.example.com.crt' nginx['ssl_certificate_key'] = '/etc/gitlab/trusted-certs/gitlab.example.com.key' ports: - "30080:30080" - "30022:22" postgresql: restart: always image: postgres:9.6.2-alpine environment: - POSTGRES_USER=gitlab - POSTGRES_PASSWORD=gitlab - POSTGRES_DB=gitlabhq_production redis: restart: always image: redis:3.0.7-alpine 

在创build自签名证书时,我需要执行到我的docker容器中,并使用docker工具创build它们

证书(自签名)在我的机器上的path引用“/etc/gitlab/trusted-certs/gitlab.example.com.crt”

您的docker-compose.yml没有将您的主机中的任何文件夹映射到您的容器中。 容器只不过是一个命名空间的过程,其中一个命名空间就是文件系统。 要将主机中的目录映射到容器中,可以使用简单的绑定装入语法:

 gitlab: image: 'gitlab/gitlab-ce:9.1.0-ce.0' restart: always hostname: 'gitlab.example.com' volumes: - ./path/to/gitlab.example.com.crt:/etc/gitlab/trusted-certs/gitlab.example.com.crt:ro ... 

请注意,这将从主机装载到容器中,并且该文件将使用:ro语法configuration为只读,以防止容器内的进程修改您的证书。 如果您的docker主机位于虚拟机(包括docker for windows / mac)或远程服务器中,则需要确保文件可以在那里访问(例如,用于win / mac的docker具有将PC文件夹共享到embedded式VM)。