如何通过docker compose启动gitlab ce容器,并且已经设置了管理员凭据?

如何通过docker compose启动gitlab ce容器,并且已经设置了管理员凭据?,docker,docker-compose,gitlab,Docker,Docker Compose,Gitlab,我有一个带有Gitlab CE容器的docker compose.yml文件: services: // other services.. gitlab: image: 'gitlab/gitlab-ce' restart: always ports: - '80:80' - '443:443' - '22:22' - "127.0.0.1:8081:80" volumes: - '/etc/gi

我有一个带有Gitlab CE容器的
docker compose.yml
文件:

services:
  // other services..
  gitlab:
    image: 'gitlab/gitlab-ce'
    restart: always
    ports:
      - '80:80'
      - '443:443'
      - '22:22'
      - "127.0.0.1:8081:80"
    volumes:
      - '/etc/gitlab'
      - '/var/log/gitlab'
      - '/var/opt/gitlab'
    networks:
      - backend
启动时,这要求您打开浏览器,转到(本例中)
localhost:8081
并手动输入密码

我希望这个过程是自动化的(用于本地开发和测试目的)

Gitlab自己的答案:

    gitlab-rails console production
    user = User.where(id: 1).first
    user.password = 'somethingsomething'
    user.password_confirmation = 'somethingsomething'
    user.save!
    exit
如果我在一切都设置好之后ssh到Gitlab CE容器中(需要几分钟),这一点就可以实现

通过
命令直接运行此命令不起作用-可能是因为
gitlab rails控制台在容器启动时还没有准备好

我尝试使用
gitlab/gitlab ce
图像手动创建
Dockerfile
,使用
COPY
将上述脚本放入容器中并
CMD
将其保存。然而,正如预测的那样,这会失败,因为启动时gitlab rails控制台还没有准备好。这需要一段时间


理想的场景是容器启动、安装Gitlab并完成所有的安装工作;然后自动设置根管理员密码

解决方案是将
GITLAB\u OMNIBUS\u CONFIG
设置为环境变量

这项工作:

services:
  // other services..
  gitlab:
    image: 'gitlab/gitlab-ce'
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        gitlab_rails['initial_root_password'] = 'adminadmin'
    ports:
      - '80:80'
      - '443:443'
      - '22:22'
      - "127.0.0.1:8081:80"
    volumes:
      - '/etc/gitlab'
      - '/var/log/gitlab'
      - '/var/opt/gitlab'
    networks:
      - backend
启动服务时,将确认:

gitlab_1       |               == Seed from /opt/gitlab/embedded/service/gitlab-rails/db/fixtures/production/002_admin.rb
gitlab_1       |               Administrator account created:
gitlab_1       |               
gitlab_1       |               login:    root
gitlab_1       |               password: adminadmin