GitLab Docker新增环境变量
在使用Docker部署GitLab时,为了满足不同的需求,我们经常需要设置一些环境变量来定制GitLab的配置。本文将详细介绍如何在Docker部署的GitLab中新增环境变量,并讨论一些常见的用例。
什么是环境变量
环境变量是在操作系统中存储的一些值,可以被不同的应用程序访问和使用。在Docker中,环境变量可以用来配置容器的属性,包括软件的行为、特性和设置。
在Docker中设置GitLab的环境变量
在使用Docker部署GitLab时,我们可以通过docker run
命令行指定环境变量,也可以通过Docker Compose文件设置环境变量。
通过docker run
命令行设置环境变量
使用docker run
命令行运行GitLab容器时,可以使用-e
选项来指定环境变量。例如,我们可以通过以下命令行设置GitLab的SMTP服务器地址和端口:
docker run -d \
--hostname gitlab.example.com \
-p 443:443 -p 80:80 -p 22:22 \
--env GITLAB_OMNIBUS_CONFIG="external_url 'https://gitlab.example.com'; gitlab_rails['smtp_enable'] = true; gitlab_rails['smtp_address'] = 'smtp.example.com'; gitlab_rails['smtp_port'] = 587; gitlab_rails['smtp_user_name'] = 'user@example.com'; gitlab_rails['smtp_password'] = 'password'; gitlab_rails['smtp_domain'] = 'example.com'; gitlab_rails['smtp_authentication'] = 'login'; gitlab_rails['smtp_enable_starttls_auto'] = true;" \
--name gitlab \
gitlab/gitlab-ce:latest
在上面的命令行中,我们使用了--env
选项来指定了GITLAB_OMNIBUS_CONFIG
环境变量,该环境变量包含了GitLab的SMTP配置信息。
通过Docker Compose文件设置环境变量
如果你更倾向于使用Docker Compose来管理容器,你可以在docker-compose.yml
文件中设置环境变量。以下是一个示例的docker-compose.yml
文件,其中设置了GitLab的SMTP配置环境变量:
version: '3'
services:
gitlab:
image: gitlab/gitlab-ce:latest
container_name: gitlab
restart: always
hostname: gitlab.example.com
ports:
- "443:443"
- "80:80"
- "22:22"
environment:
- GITLAB_OMNIBUS_CONFIG=external_url 'https://gitlab.example.com'; gitlab_rails['smtp_enable'] = true; gitlab_rails['smtp_address'] = 'smtp.example.com'; gitlab_rails['smtp_port'] = 587; gitlab_rails['smtp_user_name'] = 'user@example.com'; gitlab_rails['smtp_password'] = 'password'; gitlab_rails['smtp_domain'] = 'example.com'; gitlab_rails['smtp_authentication'] = 'login'; gitlab_rails['smtp_enable_starttls_auto'] = true;
通过以上的Docker Compose文件,我们可以使用docker-compose up -d
命令来启动GitLab容器,并设置了SMTP服务器的环境变量。
常见的GitLab环境变量用例
除了SMTP配置之外,GitLab还提供了很多其他的环境变量用以配置不同的特性和行为。以下是一些常见的GitLab环境变量用例:
配置外部URL
GITLAB_OMNIBUS_CONFIG=external_url 'https://gitlab.example.com'
配置SMTP服务器
GITLAB_OMNIBUS_CONFIG=gitlab_rails['smtp_enable'] = true; gitlab_rails['smtp_address'] = 'smtp.example.com'; gitlab_rails['smtp_port'] = 587; gitlab_rails['smtp_user_name'] = 'user@example.com'; gitlab_rails['smtp_password'] = 'password'; gitlab_rails['smtp_domain'] = 'example.com'; gitlab_rails['smtp_authentication'] = 'login'; gitlab_rails['smtp_enable_starttls_auto'] = true;
配置LDAP认证
GITLAB_OMNIBUS_CONFIG=gitlab_rails['ldap_enabled'] = true; gitlab_rails['ldap_servers'] = YAML.load <<-CONFIG
main:
label: 'LDAP'
host: '_your_ldap_host_'
port: 389
uid: 'sAMAccountName'
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: '_the_full_dn_of_the_user_you_will_bind_with'
password: '_the_password_of_the_bind_user'
active_directory: true
allow_username_or_email_login: false
block_auto_created_users: false
base: '_the_base_where_you_search_for_users'
user_filter: ''
## EE only
group_base: ''
admin_group: ''
sync_ssh_keys: true
CONFIG
总结
通过本文的介绍,我们学习了如何在Docker部署的GitLab中新增环境变量,以及一些常见的GitLab环境变量用例。通过合理的配置环境变量,我们可以定制化GitLab的行为,满足不同的需求。