cbl*_*bll 6 gitlab docker docker-compose
我有一个docker-compose.yml带有 Gitlab CE 容器的文件:
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
Run Code Online (Sandbox Code Playgroud)
启动时,这需要您打开浏览器,转到(在本例中)localhost:8081并手动输入密码。
我希望这个过程能够自动化(用于本地开发和测试目的)。
Gitlab 自己的答案:
gitlab-rails console production
user = User.where(id: 1).first
user.password = 'somethingsomething'
user.password_confirmation = 'somethingsomething'
user.save!
exit
Run Code Online (Sandbox Code Playgroud)
如果我在一切设置完毕后 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
Run Code Online (Sandbox Code Playgroud)
启动服务时,确认了这一点:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9729 次 |
| 最近记录: |