美文网首页java高级开发
docker for gitlab-ce社区中文版

docker for gitlab-ce社区中文版

作者: 老鼠AI大米_Java全栈 | 来源:发表于2018-11-22 14:20 被阅读23次

参考https://hub.docker.com/r/twang2218/gitlab-ce-zh/

机器环境

安装GitLab显示502很大程度上是因为CPU、内存耗尽导致
VMware安装最低2个CPU,2G内存,如果允许最好是4G.

简单运行

如果想简单的运行一下看看,可以执行这个命令:

docker run -d -p 3000:80 twang2218/gitlab-ce-zh:11.1.4

可以将 11.1.4 换成你所需要的版本标签。

启动后就可以通过主机的 3000 端口看到运行结果了,比如用的是本机 Docker 的话,访问:http://localhost:3000 即可。

测试结束后,彻底清除容器可以用命令:

docker rm -fv <容器ID>

这样可以停止、删除容器,并清除数据。

使用 Docker Compose

正常部署时,可以使用 Docker Compose 来配置启动。建立一个 docker-compose.yml,内容如下:

version: '2'
services:
    gitlab:
      image: 'twang2218/gitlab-ce-zh:11.1.4'
      restart: unless-stopped
      hostname: 'gitlab.example.com'
      environment:
        TZ: 'Asia/Shanghai'
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://gitlab.example.com'
          gitlab_rails['time_zone'] = 'Asia/Shanghai'
          # 需要配置到 gitlab.rb 中的配置可以在这里配置,每个配置一行,注意缩进。
          # 比如下面的电子邮件的配置:
          # gitlab_rails['smtp_enable'] = true
          # gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
          # gitlab_rails['smtp_port'] = 465
          # gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
          # gitlab_rails['smtp_password'] = "password"
          # gitlab_rails['smtp_authentication'] = "login"
          # gitlab_rails['smtp_enable_starttls_auto'] = true
          # gitlab_rails['smtp_tls'] = true
          # gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
      ports:
        - '80:80'
        - '443:443'
        - '22:22'
      volumes:
        - config:/etc/gitlab
        - data:/var/opt/gitlab
        - logs:/var/log/gitlab
volumes:
    config:
    data:
    logs:

注意,先在本地创建目录config、data、logs.
然后使用命令 docker-compose up -d 来启动,停止服务使用 docker-compose down。
如果你的服务器有域名,将上面的 gitlab.example.com 替换为实际域名。
实验时,也可以直接修改 /etc/hosts 方便测试。比如:
127.0.0.1 gitlab.example.com

使用 Docker 命令启动

直接使用 docker 命令要比使用 docker-compose 繁琐一些,但是可以达到一样的效果。

首先,Docker 容器数据应该存储于卷中,在这里我们使用最简单的本地命名卷:

  • gitlab-config 存储 GitLab 配置信息
  • gitlab-data 存储数据库
  • gitlab-logs 存储日志
    然后,我们需要创建自定义网络,从而让容器运行于独立的网络中,区别于默认网桥。

docker network create gitlab-net
准备好后,开始运行 Gitlab 容器:

docker run -d \
    --hostname gitlab.example.com \
    -p 80:80 \
    -p 443:443 \
    -p 22:22 \
    --name gitlab \
    --restart unless-stopped \
    -v gitlab-config:/etc/gitlab \
    -v gitlab-logs:/var/log/gitlab \
    -v gitlab-data:/var/opt/gitlab \
    --network gitlab-net \
    twang2218/gitlab-ce-zh:11.1.4

如果需要进入容器修改配置文件,可以用 docker exec 命令进入容器:

$ docker exec -it gitlab bash
root@09f6e32c528c:/# vi /etc/gitlab/gitlab.rb
root@09f6e32c528c:/# gitlab-ctl reconfigure
Starting Chef Client, version 12.12.15
resolving cookbooks for run list: ["gitlab"]

如需停止服务,直接运行 docker stop gitlab。

如需卸载服务及相关内容,可以执行:

docker stop gitlab
docker rm gitlab
docker network rm gitlab-net
docker volume rm gitlab-config gitlab-datagitlab-logs

Dockerfile

#####################
#  Building Stage   #
#####################
FROM gitlab/gitlab-ce:11.1.4-ce.0 as builder

ENV GITLAB_DIR=/opt/gitlab/embedded/service/gitlab-rails
ENV GITLAB_GIT_ZH=https://gitlab.com/xhang/gitlab.git

# Reference:
# * https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/config/software/gitlab-rails.rb
# * https://gitlab.com/gitlab-org/gitlab-ce/blob/master/.gitlab-ci.yml
RUN set -xe \
    && echo " # Preparing ..." \
    && export DEBIAN_FRONTEND=noninteractive \
    && export SSL_CERT_DIR=/etc/ssl/certs/ \
    && export GIT_SSL_CAPATH=/etc/ssl/certs/ \
    && curl -sL https://deb.nodesource.com/setup_8.x | bash - \
    && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
    && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
    && apt-get update \
    && apt-get install -yqq lsb-release patch nodejs python build-essential yarn cmake

RUN set -xe \
    && echo " # Generating translation patch ..." \
    && cd /tmp \
    && git clone ${GITLAB_GIT_ZH} gitlab \
    && cd gitlab \
    && export IGNORE_DIRS=':!qa :!spec :!features :!.gitignore :!.gitlab :!locale :!app/assets/ :!vendor/assets/' \
    && git diff --diff-filter=d v11.1.4..v11.1.4-zh -- . ${IGNORE_DIRS} > ../zh_CN.diff \
    && echo " # Patching ..." \
    && patch -d ${GITLAB_DIR} -p1 < ../zh_CN.diff \
    && echo " # Copy assets files ..." \
    && git checkout v11.1.4-zh \
    && cp -R locale ${GITLAB_DIR}/ \
    && mkdir -p ${GITLAB_DIR}/app \
    && cp -R app/assets ${GITLAB_DIR}/app/ \
    && mkdir -p ${GITLAB_DIR}/vendor \
    && cp -R vendor/assets ${GITLAB_DIR}/vendor/

RUN set -xe \
    && echo " # Regenerating the assets" \
    && cd ${GITLAB_DIR} \
    && cp config/gitlab.yml.example config/gitlab.yml \
    && cp config/database.yml.postgresql config/database.yml \
    && cp config/secrets.yml.example config/secrets.yml \
    && rm -rf public/assets \
    && export NODE_ENV=production \
    && export RAILS_ENV=production \
    && export SETUP_DB=false \
    && export USE_DB=false \
    && export SKIP_STORAGE_VALIDATION=true \
    && export WEBPACK_REPORT=true \
    && export NO_COMPRESSION=true \
    && export NO_PRIVILEGE_DROP=true \
    && export NODE_OPTIONS=--max-old-space-size=4086 \
    && yarn install --frozen-lockfile \
    && bin/bundle install --frozen \
    && bin/rake gettext:compile \
    && bin/rake gitlab:assets:compile

RUN set -xe \
    && echo " # Cleaning ..." \
    && yarn cache clean \
    && rm -rf log \
        tmp \
        config/gitlab.yml \
        config/database.yml \
        config/secrets.yml \
        .secret \
        .gitlab_shell_secret \
        .gitlab_workhorse_secret \
        app/assets \
        node_modules \
    && find /usr/lib/ -name __pycache__ | xargs rm -rf \
    && rm -rf /tmp/gitlab /tmp/*.diff /root/.cache /var/lib/apt/lists/*


######################
#  Production Stage  #
######################
FROM gitlab/gitlab-ce:11.1.4-ce.0 as production

RUN set -xe \
    && export DEBIAN_FRONTEND=noninteractive \
    && apt-get update \
    && apt-get install -yqq locales tzdata \
    && locale-gen en_US.UTF-8 \
    && rm -rf /var/lib/apt/lists/*

ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8
ENV TZ=Asia/Shanghai

ENV GITLAB_VERSION=v11.1.4
ENV GITLAB_DIR=/opt/gitlab/embedded/service/gitlab-rails
ENV GITLAB_GIT_ZH=https://gitlab.com/xhang/gitlab.git
ENV GITLAB_GIT_COMMIT_UPSTREAM=v11.1.4
ENV GITLAB_GIT_COMMIT_ZH=v11.1.4-zh

COPY --from=builder ${GITLAB_DIR}/app                   ${GITLAB_DIR}/app
COPY --from=builder ${GITLAB_DIR}/public                ${GITLAB_DIR}/public
COPY --from=builder ${GITLAB_DIR}/config/application.rb ${GITLAB_DIR}/config/application.rb
COPY --from=builder ${GITLAB_DIR}/config/initializers   ${GITLAB_DIR}/config/initializers
COPY --from=builder ${GITLAB_DIR}/config/locales        ${GITLAB_DIR}/config/locales
COPY --from=builder ${GITLAB_DIR}/lib/gitlab            ${GITLAB_DIR}/lib/gitlab
COPY --from=builder ${GITLAB_DIR}/locale                ${GITLAB_DIR}/locale

相关文章

网友评论

    本文标题:docker for gitlab-ce社区中文版

    本文链接:https://www.haomeiwen.com/subject/lkdlqqtx.html