Docker 文件结构中未显示 SSL 证书或其他文件
SSL certificates or other files not showing in Docker file structure
我有一个 Gitlab 的 Docker 构建,我创建了一些 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
创建自签名证书时,我需要执行我的 docker 容器并使用 docker bash
创建它们
The certificates (self signed) are on my machine at the path referenced "/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
语法配置为只读,以防止容器内的进程修改您的证书。如果您的 docker 主机在 VM 内(包括 docker for windows/mac)或在远程服务器上,您需要确保可以在那里访问文件(例如 docker for win/mac 具有将 PC 文件夹共享到嵌入式 VM 的设置。
我有一个 Gitlab 的 Docker 构建,我创建了一些 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
创建自签名证书时,我需要执行我的 docker 容器并使用 docker bash
创建它们The certificates (self signed) are on my machine at the path referenced "/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
语法配置为只读,以防止容器内的进程修改您的证书。如果您的 docker 主机在 VM 内(包括 docker for windows/mac)或在远程服务器上,您需要确保可以在那里访问文件(例如 docker for win/mac 具有将 PC 文件夹共享到嵌入式 VM 的设置。