我有一个带有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容器,则可以使用。
直接通过
command
运行此命令不起作用-大概是因为gitlab-rails console
尚未准备好在容器启动的那一刻开始运行。我尝试使用
Dockerfile
图像手动创建gitlab/gitlab-ce
,使用COPY
将上述脚本放入容器中,并对其进行CMD
。但是,正如预期的那样,此操作失败,因为gitlab-rails console
在启动时尚未准备好。需要一段时间理想的情况是容器启动,安装Gitlab并完成所有设置。然后自动设置root管理员密码。
最佳答案
解决方案是将GITLAB_OMNIBUS_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
关于docker - 如何通过已设置管理员凭据的docker-compose启动gitlab-ce容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56631893/