求助, 服务器上用 Docker 部署 Gitlab + CI / CD

2019-07-31 07:08:27 +08:00
 0bject

我想在服务器上用 Docker 部署 Gitlab + CI/CD,我想用一个 docker-compose 把配置全写好. Github 上看了不少,也做了不少尝试,但水平有限,希望各位指点下,也可以加bnpiZXRh,一起趟坑.

我的 runner 是不是不应该写在这里, 因为可能会有好几个.

多谢.

version: '3'
services:
  gitlab:
    image: gitlab/gitlab-ce
    restart: always
    container_name: gitlab-ce
    hostname: "${SERVER_IP}"
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url "http://${SERVER_IP}:9001"
        gitlab_rails['time_zone'] = 'Pacific/Auckland'
        gitlab_rails['gitlab_shell_ssh_port'] = 9002
        letsencrypt['enable'] = false

        # Configure headers for outgoing email.
        gitlab_rails['gitlab_email_enabled'] = true
        gitlab_rails['gitlab_email_from'] = 'no-reply@${SERVER_IP}'
        gitlab_rails['gitlab_email_display_name'] = 'GitLab'
        gitlab_rails['gitlab_email_reply_to'] = 'no-reply@${SERVER_IP}'

        # Send outgoing email via the SMTP container:
        gitlab_rails['smtp_enable'] = true
        gitlab_rails['smtp_address'] = "mail"
        gitlab_rails['smtp_port'] = 25
        gitlab_rails['smtp_tls'] = false

        # Limit backup lifetime to 7 days (604800 seconds):
        # gitlab_rails['backup_keep_time'] = 604800

        # GitLab Pages
        pages_external_url "http://${SERVER_IP}:9005"
    ports:
      # - '9003:80'
      # - '9004:443'
      - '9001:9090'
      - '9002:22'
    volumes:
      - ./volumes/config:/etc/gitlab
      - ./volumes/logs:/var/log/gitlab
      - ./volumes/data:/var/opt/gitlab
    depends_on:
      - redis
      - postgres

  mail:
    image: bytemark/smtp
    container_name: gitlab-mail
    restart: always

  runner:
    image: gitlab/gitlab-runner
    restart: always
    container_name: gitlab_runner
    environment:
      - CI_SERVER_URL=http://${SERVER_IP}:9001/
    volumes:
      - ./volumes/runner/runner1:/etc/gitlab-runner
      - ./volumes/runner/runner1/var/docker.sock:/var/run/docker.sock:rw

  postgres:
    image: postgres
    restart: always
    container_name: gitlab_pg
    # http://github.com/docker-library/docs/tree/master/postgres#environment-variables
    environment:
      POSTGRES_USER: gitlab
      POSTGRES_PASSWORD: gitlab
      POSTGRES_DB: gitlab
    volumes:
      - ./volumes/postgres:/var/lib/postgresql/data
    restart: always

  redis:
    image: redis
    restart: always
    container_name: gitlab_redis
    command:
      - --loglevel warning
    volumes:
      - ./volumes/postgres:/var/lib/redis
    restart: always
4929 次点击
所在节点    Docker
8 条回复
XSG
2019-07-31 07:19:34 +08:00
你就一台机器吗? runner 一般不能跟 server 在一起,跑的任务如果很耗资源就会影响你的 server 服务质量,而且你也说了,可能有很多 runner,server 一定要稳定。
如果真的想用一个配置文件搞定,建议上 swarm,指定各个应用的节点
0bject
2019-07-31 07:40:15 +08:00
@XSG 我就一台机器. 那我就先试试 gitlab, 然后再加 runner, 我觉得是我以前的思路错了
des
2019-07-31 08:37:42 +08:00
不要放一起+1
gitlab 本身就很吃资源的
0bject
2019-07-31 09:16:18 +08:00
@des
@XSG

请问你们都是用什么
cheshire
2019-07-31 09:47:10 +08:00
我们把 runner 丢到了 k8s 里
ETiV
2019-07-31 10:05:02 +08:00
官方建议用 gitlab-ee。「不导入 license 跑就可以了,功能跟 CE 一样的」

然后 postgres、redis 都可以不用自己搞,它内建了全套。

这样可以把 GITLAB_OMNIBUS_CONFIG 这一坨放配置放文件里…

然后 external_url 用 http 不带 s 的协议,不会默认启用任何 https 证书类的配置,所以后面的 letsencrypt 其实是可以省略的……

runner 没碰过,我用 TeamCity 的…
0bject
2019-07-31 10:12:35 +08:00
@cheshire 还没搞 k8s


@ETiV 也就是说 现在只需要配置 ominibus 了? 我这个 docker - compose 也是到处抄的 揉到一起了
XSG
2019-07-31 14:38:18 +08:00
sever 丢到 k8s 集群了,runner 到处都是,不同项目用不同的 runner

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/587703

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX