Loading... # Gitlab > 安装文档:https://docs.gitlab.cn/jh/install/docker.html > gitlab runner:https://cloud.tencent.com/developer/article/1803787 > gitlab runner 的 Vue部署:http://www.javashuo.com/article/p-bcjuzymi-cn.html # Docker部署 ```bash sudo docker run --detach \ --hostname gitlab.145.ac.cn \ --publish 8080:8080 --publish 8089:8089 --publish 8443:8443 --publish 443:443 --publish 465:465 --publish 994:994 --publish 80:80 --publish 8022:22 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ --shm-size 256m \ registry.gitlab.cn/omnibus/gitlab-jh:16.1.2 sudo docker run --detach \ --hostname gitlab.145.ac.cn \ --publish 443:443 --publish 465:465 --publish 80:80 --publish 8022:22 \ --name gitlab_new \ --restart always \ --volume /mnt/sdb1/gitlab/config:/etc/gitlab \ --volume /mnt/sdb1/gitlab/logs:/var/log/gitlab \ --volume /mnt/sdb1/gitlab/data:/var/opt/gitlab \ --shm-size 256m \ registry.gitlab.cn/omnibus/gitlab-jh:15.6.2 ``` 新配置 ```shell sudo docker run --detach \ --hostname gitlab.145.ac.cn \ --publish 443:443 --publish 465:465 --publish 80:80 --publish 8022:22 \ --name gitlab \ --restart always \ --volume /mnt/sdb1/gitlab/config:/etc/gitlab \ --volume /mnt/sdb1/gitlab/logs:/var/log/gitlab \ --volume /mnt/sdb1/gitlab/data:/var/opt/gitlab \ --volume /mnt/sdb1/gitlab/backup:/var/opt/gitlab/backups \ --shm-size 256m \ registry.gitlab.cn/omnibus/gitlab-jh:16.1.2 ``` 可选添加预配置设置 > --env GITLAB_OMNIBUS_CONFIG="external_url 'http://145.int0030.xyz:8089'; gitlab_rails['gitlab_shell_ssh_port'] = 8022; gitlab_rails['smtp_enable'] = true; gitlab_rails['smtp_address'] = 'smtp.ym.163.com'; gitlab_rails['smtp_port'] = 465; gitlab_rails['smtp_user_name'] = 'gitlab@int0030.xyz'; gitlab_rails['smtp_password'] = '5Yv7C7MF5T'; gitlab_rails['smtp_domain'] = 'smtp.ym.163.com'; gitlab_rails['smtp_authentication'] ='login'; gitlab_rails['smtp_enable_starttls_auto'] = true; gitlab_rails['smtp_tls'] = true; gitlab_rails['gitlab_email_from'] = 'gitlab@int0030.xyz'; user['git_user_email'] = 'gitlab@int0030.xyz'" \ ## 获取log以跟踪初始化进度 ```bash sudo docker logs -f gitlab ``` ## 修改root密码 ```bash sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password ``` # Gitlab Runner > 以下方法已弃用 ## 运行gitlab runner镜像 ```bash docker run -itd --restart=always --name gitlab-runner \ -v /srv/gitlab/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest ``` ## 注册gitlab runner ```sh root@LuoJY-145VM:/home/int0030# sudo docker exec -it gitlab-runner /bin/bash root@035f5e7aa900:/# ls bin boot dev entrypoint etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var root@035f5e7aa900:/# gitlab-runner register Runtime platform arch=amd64 os=linux pid=24 revision=76984217 version=15.1.0 Running in system-mode. Enter the GitLab instance URL (for example, https://gitlab.com/): https://145.int0030.xyz:8089 Enter the registration token: hAzJAhCxz8BAqvjPrYvy Enter a description for the runner: [035f5e7aa900]: int0030 Enter tags for the runner (comma-separated): int0030 Enter optional maintenance note for the runner: Registering runner... succeeded runner=hAzJAhCx Enter an executor: docker-ssh, shell, docker+machine, docker-ssh+machine, kubernetes, custom, docker, parallels, ssh, virtualbox: docker Enter the default Docker image (for example, ruby:2.7): docker:20.10.17 Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! root@035f5e7aa900:/# gitlab-runner restart \Runtime platform arch=amd64 os=linux pid=34 revision=76984217 version=15.1.0 ``` # 邮件服务器 ## 编辑配置文件 编辑宿主机 `/srv/gitlab/config`下的 `gitlab.rb`文件,在文件头添加如下信息。 ```yaml external_url 'https://gitlab.145.ac.cn' gitlab_rails['gitlab_shell_ssh_port'] = 8022 gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = 'smtp.ym.163.com' gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = 'gitlab@int0030.xyz' gitlab_rails['smtp_password'] = '5Yv7C7MF5T' gitlab_rails['smtp_domain'] = 'smtp.ym.163.com' gitlab_rails['smtp_authentication'] ='login' gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = 'gitlab@int0030.xyz' user['git_user_email'] = 'gitlab@int0030.xyz' ``` ## 重新配置Gitlab ```bash sudo docker exec -it gitlab gitlab-ctl reconfigure ``` ## 验证配置是否生效 1. 进入容器 ```bash sudo docker exec -it gitlab /bin/bash ``` 2. 进入gitlab控制台 ```bash gitlab-rails console ``` 3. 验证邮箱设置 1. 验证邮箱服务器 ```bash ActionMailer::Base.delivery_method ``` 2. 验证邮箱发送消息设置 ```bash ActionMailer::Base.smtp_settings ``` 3. 发送测试邮件 ```bash Notify.test_email('1849697418@qq.com','Test','Test Body').deliver_now Notify.test_email('int0030@163.com','Test','Test Body').deliver_now Notify.test_email('gitlab@int0030.xyz','Test','Test Body').deliver_now ``` # 配置SSL 1. 申请ssl证书:`gitlab.145.int0030.xyz`、`145.int0030.xyz` 2. 编辑宿主机 `/srv/gitlab/config`下的 `gitlab.rb`文件 ```yaml # ssl nginx['enable'] = true nginx['redirect_http_to_https']=true nginx['ssl_certificate'] = "/etc/gitlab/ssl/8034211_145.int0030.xyz.pem" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/8034211_145.int0030.xyz.key" ``` # Gitlab Pages的配置 ## 开启Pages 编辑宿主机 `/srv/gitlab/config`下的 `gitlab.rb`文件 ```yaml gitlab_pages['enable'] = true pages_external_url "http://pages.145.ac.cn/" ``` ## 配置Pages SSL访问 ```bash apt install socat cron curl https://get.acme.sh | sh -s email=gitlab@int0030.xyz ls /root/.acme.sh ./root/.acme.sh/acme.sh --issue --dns -d *.pages.145.ac.cn -d pages.145.ac.cn --yes-I-know-dns-manual-mode-enough-go-ahead-please ``` 输出为 ```sh [2022年 07月 12日 星期二 12:10:06 CST] Using CA: https://acme.zerossl.com/v2/DV90 [2022年 07月 12日 星期二 12:10:06 CST] Create account key ok. [2022年 07月 12日 星期二 12:10:06 CST] No EAB credentials found for ZeroSSL, let's get one [2022年 07月 12日 星期二 12:10:08 CST] Registering account: https://acme.zerossl.com/v2/DV90 [2022年 07月 12日 星期二 12:10:41 CST] Registered [2022年 07月 12日 星期二 12:10:41 CST] ACCOUNT_THUMBPRINT='xabDis5AvEj2mMXv0uDHP_GnMUUNYFvz30WsEGZTHGI' [2022年 07月 12日 星期二 12:10:41 CST] Creating domain key [2022年 07月 12日 星期二 12:10:41 CST] The domain key is here: /root/.acme.sh/*.pages.145.ac.cn/*.pages.145.ac.cn.key [2022年 07月 12日 星期二 12:10:41 CST] Multi domain='DNS:*.pages.145.ac.cn,DNS:pages.145.ac.cn' [2022年 07月 12日 星期二 12:10:41 CST] Getting domain auth token for each domain [2022年 07月 12日 星期二 12:11:18 CST] Getting webroot for domain='*.pages.145.ac.cn' [2022年 07月 12日 星期二 12:11:18 CST] Getting webroot for domain='pages.145.ac.cn' [2022年 07月 12日 星期二 12:11:18 CST] Add the following TXT record: [2022年 07月 12日 星期二 12:11:18 CST] Domain: '_acme-challenge.pages.145.ac.cn' [2022年 07月 12日 星期二 12:11:18 CST] TXT value: 'fuwQLcGEmkQKCpihkmFFxiRYiyh0wUEC5gg6Ghv0RrQ' [2022年 07月 12日 星期二 12:11:18 CST] Please be aware that you prepend _acme-challenge. before your domain [2022年 07月 12日 星期二 12:11:18 CST] so the resulting subdomain will be: _acme-challenge.pages.145.ac.cn [2022年 07月 12日 星期二 12:11:18 CST] Add the following TXT record: [2022年 07月 12日 星期二 12:11:18 CST] Domain: '_acme-challenge.pages.145.ac.cn' [2022年 07月 12日 星期二 12:11:18 CST] TXT value: 'eVslHJBx0DfmKHcX_oXdAtK7jnhdN9pKQXNRncelekM' [2022年 07月 12日 星期二 12:11:18 CST] Please be aware that you prepend _acme-challenge. before your domain [2022年 07月 12日 星期二 12:11:18 CST] so the resulting subdomain will be: _acme-challenge.pages.145.ac.cn [2022年 07月 12日 星期二 12:11:18 CST] Please add the TXT records to the domains, and re-run with --renew. [2022年 07月 12日 星期二 12:11:18 CST] Please add '--debug' or '--log' to check more details. [2022年 07月 12日 星期二 12:11:18 CST] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh ``` 根据输出添加DNS解析,并验证 ```bash ./root/.acme.sh/acme.sh --renew -d *.pages.145.ac.cn -d pages.145.ac.cn --yes-I-know-dns-manual-mode-enough-go-ahead-please ``` 输出如下 ```sh [2022年 07月 12日 星期二 12:13:44 CST] Renew: '*.pages.145.ac.cn' [2022年 07月 12日 星期二 12:13:44 CST] Renew to Le_API=https://acme.zerossl.com/v2/DV90 [2022年 07月 12日 星期二 12:13:56 CST] Using CA: https://acme.zerossl.com/v2/DV90 [2022年 07月 12日 星期二 12:13:56 CST] Multi domain='DNS:*.pages.145.ac.cn,DNS:pages.145.ac.cn' [2022年 07月 12日 星期二 12:13:56 CST] Getting domain auth token for each domain [2022年 07月 12日 星期二 12:13:56 CST] Verifying: *.pages.145.ac.cn [2022年 07月 12日 星期二 12:14:19 CST] Processing, The CA is processing your order, please just wait. (1/30) [2022年 07月 12日 星期二 12:14:33 CST] Success [2022年 07月 12日 星期二 12:14:33 CST] Verifying: pages.145.ac.cn [2022年 07月 12日 星期二 12:14:44 CST] Processing, The CA is processing your order, please just wait. (1/30) [2022年 07月 12日 星期二 12:14:57 CST] Success [2022年 07月 12日 星期二 12:14:57 CST] Verify finished, start to sign. [2022年 07月 12日 星期二 12:14:57 CST] Lets finalize the order. [2022年 07月 12日 星期二 12:14:57 CST] Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/Tkdo9YLLzCkqCr8TzLbbzw/finalize' [2022年 07月 12日 星期二 12:15:08 CST] Order status is processing, lets sleep and retry. [2022年 07月 12日 星期二 12:15:08 CST] Retry after: 15 [2022年 07月 12日 星期二 12:15:24 CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/Tkdo9YLLzCkqCr8TzLbbzw [2022年 07月 12日 星期二 12:15:33 CST] Downloading cert. [2022年 07月 12日 星期二 12:15:33 CST] Le_LinkCert='https://acme.zerossl.com/v2/DV90/cert/N9GxxRQ4YVvN3I3XV0x_vg' [2022年 07月 12日 星期二 12:15:51 CST] Cert success. [2022年 07月 12日 星期二 12:15:51 CST] Your cert is in: /root/.acme.sh/*.pages.145.ac.cn/*.pages.145.ac.cn.cer [2022年 07月 12日 星期二 12:15:51 CST] Your cert key is in: /root/.acme.sh/*.pages.145.ac.cn/*.pages.145.ac.cn.key [2022年 07月 12日 星期二 12:15:51 CST] The intermediate CA cert is in: /root/.acme.sh/*.pages.145.ac.cn/ca.cer [2022年 07月 12日 星期二 12:15:51 CST] And the full chain certs is there: /root/.acme.sh/*.pages.145.ac.cn/fullchain.cer ``` 导出证书 ```bash ./root/.acme.sh/acme.sh --install-cert -d *.pages.145.ac.cn --key-file /etc/gitlab/ssl/key.key --fullchain-file /etc/gitlab/ssl/cer.cer ``` 编辑宿主机 `/srv/gitlab/config`下的 `gitlab.rb`文件 ```yaml gitlab_pages['enable'] = true pages_external_url "https://pages.145.ac.cn/" pages_nginx['redirect_http_to_https'] = true pages_nginx['ssl_certificate'] = "/etc/gitlab/ssl/cer.cer" pages_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/key.key" ``` 重新配置Gitlab ```bash sudo docker exec -it gitlab gitlab-ctl reconfigure ``` 最后修改:2024 年 05 月 18 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏
1 条评论
老话题新解读,展现了深刻的反思精神。