0

I have a Docker build for Gitlab, I created some ssl certificates and other files I need to pull in. However when I exec into the container bash the files are not visible.

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
4

2 回答 2

0

证书(自签名)位于我的机器上,路径为“/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 内部(包括用于 windows/mac 的 docker)或在远程服务器上,您需要确保在那里可以访问文件(例如,用于 win/mac 的 docker 具有将 PC 文件夹共享到嵌入式虚拟机)。

于 2017-12-07T19:18:25.537 回答
0

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

于 2017-12-07T18:24:17.403 回答