docker+gitlab+gitlab-runnerの詳細なデプロイメント

docker+gitlab+gitlab-runnerの詳細なデプロイメント

環境

サーバー: centos7

クライアント: ウィンドウ

Centos7 に docker+gitlab+gitlab-runner をデプロイし、win10 で ssh 接続を使用します。開発者は、プロジェクト ファイルのアップロード、イメージのパッケージ化、テストの公開と実行を行うためにコードを送信するだけで済みます。

1. Centos7にdockerとdocker-composeをインストールする

docker をインストールします:

1. Docker を使用するには、CentOS システムのカーネル バージョンが 3.10 以降である必要があります。このページの前提条件をチェックして、お使いの CentOS バージョンが Docker をサポートしているかどうかを確認してください。

uname -rコマンドを使用して現在のカーネルバージョンを確認します。

 $ uname -r

2. root権限でCentOSにログインします。 yum パッケージが最新バージョンに更新されていることを確認してください。

$ sudo yum アップデート

3. 古いバージョンをアンインストールします(古いバージョンがインストールされている場合)

$ sudo yum 削除 docker docker-common docker-selinux docker-engine

4. 必要なソフトウェア パッケージをインストールします。yum-util は yum-config-manager 機能を提供します。他の 2 つは devicemapper ドライバーに依存します。

$ sudo yum install -y yum-utils デバイスマッパー永続データ lvm2

5. yumソースを設定する

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6. すべてのリポジトリのすべてのDockerバージョンを表示し、インストールする特定のバージョンを選択できます。

$ yum list docker-ce --showduplicates | sort -r 

7. Dockerをインストールする

$ sudo yum install docker-ce #リポジトリでは安定版リポジトリのみがデフォルトで有効になっているため、最新の安定版バージョン 17.12.0 がここにインストールされます。 $ sudo yum install <FQPN> # 例: sudo yum install docker-ce-17.12.0.ce
エラーの場合:
問題: パッケージ docker-ce-3:19.03.8-3.el7.x86_64 には containerd.io >= 1.2.2-3 が必要ですが、プロバイダーをインストールできません。解決策: https://www.cnblogs.com/suanmiaoup/p/12772140.html 入力: yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm もう一度入力: yum install docker-ce docker-ce-cli containerd.io 

8. ブートを開始して参加する

$ sudo systemctl dockerを起動します
$ sudo systemctl dockerを有効にする

9. インストールが成功したかどうかを確認します (クライアントとサービス部分が存在する場合、Docker のインストールと起動が成功したことを示します)

$ docker バージョン

10. Docker イメージ ソースを変更することをお勧めします。

1. daemon.json ファイルを変更または作成します: vi /etc/docker/daemon.json

次の設定をファイルに記述し、保存して終了します (操作方法がわからない場合は、Baidu vi コマンドを試してください)。

{

  "レジストリミラー": ["http://hub-mirror.c.163.com"]

}

2. dockerを再起動します: systemctl restart docker

docker-compose をインストールします。

参考公式サイト: https://docs.docker.com/compose/install/

1. 次のコマンドを実行して、Docker Compose の最新バージョンをダウンロードします。

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2. バイナリに実行権限を適用します。

sudo chmod +x /usr/local/bin/docker-compose

2. gitlabイメージの中国語版を取得する

アドレス: https://hub.docker.com/r/twang2218/gitlab-ce-zh

1. xshell+xftpを使用して、centos7にログ、設定、データを保存するフォルダを作成します。

フォルダ構造は次のとおりです。

ギットラボ
  -設定
  -ログ
  -データ
ドッカーの作成

2. docker-compose.ymlの使用を開始する

バージョン: '3'
サービス:
  gitlab:
   イメージ: 'twang2218/gitlab-ce-zh:11.1.4'
   再起動: 停止しない限り
   ホスト名: 'gitlab.domain.com'
   コンテナ名: gitlab
   環境:
    TZ: 「アジア/上海」
    GITLAB_OMNIBUS_CONFIG: |
     外部URL 'http://gitlab.domain.com/'
     レジストリ外部 URL 'https://gitlab.domain.com'
     gitlab_rails['gitlab_shell_ssh_port'] = 1022
     gitlab_rails['time_zone'] = 'アジア/上海'
     # gitlab_rails['smtp_enable'] = true
     # gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
     # gitlab_rails['smtp_port'] = 465
     # gitlab_rails['smtp_user_name'] = "[email protected]"
     # gitlab_rails['smtp_password'] = "パスワード"
     # gitlab_rails['smtp_authentication'] = "ログイン"
     # gitlab_rails['smtp_enable_starttls_auto'] = true
     # gitlab_rails['smtp_tls'] = true
     # gitlab_rails['gitlab_email_from'] = '[email protected]'
   ポート:
    - '80:80'
    - '443:443'
    - '1022:22'
   ボリューム:
    - ./data:/var/opt/gitlab
    - ./config:/etc/gitlab
    - ./logs:/var/log/gitlab

サーバーにドメイン名がある場合は、上記の gitlab.domain.com を実際のドメイン名に置き換えてください。

実験中は、簡単にテストできるように/etc/hosts直接変更することもできます。例: 127.0.0.1 gitlab.example.com

3. gitlab ディレクトリに移動して、docker-compose up -d を実行して起動し、しばらく待ちます。 。

4. 起動が完了したら、ブラウザを開いてgitlab.domain.comにアクセスします。

5. GitLabへのSSH接続

まずSSHキーを取得する必要があるので、

猫 ~/.ssh/id_rsa.pub

ssh-rsa で始まる文字が表示された場合は、SSH キーがすでにローカルに存在し、直接使用できることを意味します。そうでない場合は、自分で SSH キーを作成する必要があります。

6. SSHキーを作成する

SSH キーを作成するには、次のコマンドを入力します。

ssh-keygen -t rsa -C "[email protected]" -b 4096

完了後、上記の cat コマンドまたは pbcopy を入力して、生成された ssh キーを直接コピーできます。

pbcopy < ~/.ssh/id_rsa.pub

GitLab で、[アカウント] - > [設定] に移動し、SSH キーを見つけてこのキーを追加します。

7. SSH接続ポート1022

通常、git コマンドを使用して、デプロイした gitlab に接続できますが、ここでの違いは、コンテナのポート 22 をホストのポート 1022 にマッピングしているため、接続するポートを指定する必要があることです。

ssh -p 1022 [email protected]

また、GitLab の設定ファイルで ssh ポートを変更する必要があります (上記で設定されている場合は必要ありません)。変更しないと、GitLab で生成されたプロジェクト接続アドレスが接続されません。 gitlab.rb の設定

gitlab_rails['gitlab_shell_ssh_port'] = 1022

SSH ポートを変更した後、gitlab コンテナを再起動すると、プロジェクトの SSH 接続アドレスは次のようになります。

ssh://[email protected]:1022/test/プロジェクト名.git

この時点で GitLab のデプロイは完了です。

3. gitlab-runnerイメージを取得する

アドレス: https://hub.docker.com/r/gitlab/gitlab-runner

1. xshell+xftpを使用して、centos7にログ、設定、データを保存するフォルダを作成します。

フォルダ構造は次のとおりです。

GitLabランナー
  -設定
ドッカーの作成

2. docker-compose.ymlの使用を開始する

バージョン: '3'
サービス:
  ランナー:
   イメージ: 'gitlab/gitlab-runner:v11.4.2'
   コンテナ名: gitlab-runner
   再起動: 常に
   ネットワーク:
    -gitlab_デフォルト
   ボリューム:
    - ./config:/etc/gitlab-runner
    - /var/run/docker.sock:/var/run/docker.sock
ネットワーク:
 gitlab_デフォルト:
  外部: 真

このうちgitlab_defaultは上記のgitlabのネットワークである

注意: gitlab-runnerのバージョンは、gitlabのバージョンと可能な限り一致している必要があります。一致していないと、gitlabに接続できなくなります。

3. gitlabディレクトリに移動し、docker-compose up -dを実行して起動します。

4. gitlab-runnerを設定してgitlabに接続する

1. gitlab-runnerを登録する

docker exec -it gitlab-runner gitlab-runner 登録

2. http://gitlab.domain.com または http://ip:port を入力します。これはローカルにインストールした GitLab です。

3. このランナーのgitlab-ciトークンを入力してください

プロジェクト管理エリア->ランナーで見つけることができます(シェアタイプのランナーはここに登録されています)

4.説明を入力します。例: test

5. タグを入力します(空白のままにしておくこともできますが、後で編集することもできます)

6. タグなしの投稿に遭遇したときに実行するかどうかを選択します。trueを選択します

7. このランナーを現在のプロジェクトにロックするかどうかは、falseを選択します。

8. 遺言執行者を選ぶ

このステップはより重要です (ssh、docker+machine、docker-ssh+machine、kubernetes、docker、parallels、virtualbox、docker-ssh、shell)

Dockerを選択

9. デフォルトのイメージを選択します: docker:stable

登録後、gitlab-ci トークンを取得するための GitLab ページで、登録したランナーを確認できます。

同時に、gitlab-runner/config の下に生成された config.toml ファイルが表示されます。ファイルの内容は次のとおりです。

同時 = 1
チェック間隔 = 0

[[ランナー]]
 名前 = "テスト"
 url = "http://192.168.1.157/"
 token = "69c0ff735a76c0bb3cce977a361661"#このトークンは、3 番目のステップのトークンに従って gitlab-runner によって生成されます。executor = "docker"
 [ランナーズ.docker]
  extra_hosts = ["gitlab.domain.com:192.168.1.157"] #上記の手順でgitlabに接続できない場合は、gitlab-runnerがdocker内でgitlab.domain.comを解決できないためです。これは、tls_verify = falseという設定を追加することで解決できます。
  image = "docker:stable" #このイメージを元にdockerなどのツールが入っているため、gitlab-runnerが実行する.gitlab-ci.ymlにdockerの指示がある場合はdockerをインストールする必要がないためです。参考アドレス: https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
  privileged = false #docker-in-docker を使用する場合は通常 true
  キャッシュを無効にする = false
  ボリューム = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
  shm_size = 0
  [ランナーズキャッシュ]

または、最初に設定しておき、gitlab-runner が実行時に設定ファイルを自動的に読み込むこともできます。

参照アドレス: https://docs.gitlab.com/ee/ci/docker/using_docker_build.html

5. プロジェクトコードを提出してCI/CDを完了する

1. プロジェクトのルート ディレクトリに .gitlab-ci.yml を追加します。プロジェクト コードを送信すると、ファイルが自動的に実行され、プロジェクトがパッケージ化されます。

イメージ: docker:stable

画像:
 name: docker/compose:1.23.2 # タグを任意のバージョンに更新します。これは、以下のスクリプトが docker-compose を使用しているためです。
 エントリポイント: ["/bin/sh", "-c"]

前スクリプト:
 -docker バージョン
 -docker-compose バージョン
 
建てる:
 スクリプト: #自分の状況に応じて次のスクリプトを記述します - COMPOSE_HTTP_TIMEOUT=200 docker-compose -f docker-compose-efk.yml up -d #これは、私のプロジェクトが docker-compose で配置されているためです - COMPOSE_HTTP_TIMEOUT=200 docker-compose up -d --build --force-recreate

2. Win10のgit経由でコードを送信する

プロジェクトのルートディレクトリに移動します。gitがインストールされている場合は、ルートディレクトリでgit bashを直接開いて実行できます。インストールされていない場合は、powershellを開くこともできます。

git init #まだ初期化されていない場合はgit add . #すべてのプロジェクトを追加git commit -m "init" gitに送信
git remote add origin [email protected]:1022/root/test.git #ポートが1022であることに注意してください。これは、上記のgitlabを実行するときに指定されます。これを1回実行するだけです。 git push -u origin master #サーバーgitlabにプッシュします

docker+gitlab+gitlab-runner の詳細なデプロイメントに関するこの記事はこれで終わりです。より関連性の高い docker gitlab gitlab-runner デプロイメント コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerでランナーコンテナを構成する方法

<<:  Vueは携帯電話のカメラとアルバムを呼び出す機能を実装します

>>:  MySQL 8.0 のデフォルトのデータディレクトリを変更する (設定なしの簡単な操作)

推薦する

2 級コンピュータ試験のための MySQL の知識ポイントとよく使用される MYSQL コマンド

2級コンピュータ試験のMySQL知識ポイントの基礎、一般的なMYSQLコマンドは次のとおりです。よく...

Linuxはjoin -a1を使用して2つのファイルを結合します

次の2つのファイルを結合するには、それらを結合して1.txtに結合します。 # 1.txt ジェリー...

HTML入門チュートリアル HTMLタグ記号をすぐにマスター

補足<br />HTML について何も知らず、HTML の始め方がまだわからない場合は、...

Linux での MongoDB のインストールと設定のチュートリアル

MongoDBインストールYumを使用してインストールすることを選択する1. repoファイルを作成...

TypeScript をインストール、使用、自動コンパイルする方法に関するチュートリアル

1. TypeScriptの紹介前回の記事ではTypeScriptのインストール、使い方、自動コンパ...

一目でわかる$nextTickの説明

目次1. 機能説明2. 親コンポーネント3. サブコンポーネント NextTick.vue 4なぜ未...

JavaScript でフロントエンドのカウントダウン効果を実装する

この記事では、フロントエンドのカウントダウン効果を実現するためのJavaScriptの具体的なコード...

VMware ESXi サーバー仮想化クラスター

目次まとめ環境とツールの準備サーバー仮想化のインストール VMware ESXi仮想マシンのオペレー...

Docker の詳細なイラスト

1. Dockerの紹介1.1 仮想化1.1.1 仮想化とは何ですか?コンピュータにおける仮想化とは...

ウェブフロントエンドコードを書く際の考慮事項のまとめ

1. HTMLタグの前に次のような文を追加するのが最適です。 <!DOCTYPE HTML P...

MySQL SHOW PROCESSLISTはトラブルシューティングの全プロセスを支援します

1. SHOW PROCESSLISTコマンドSHOW PROCESSLIST は実行中のスレッド ...

デザイナーの「職業病」について

デザイナーは世界で最も繊細で感情的な人々だと私はいつも感じています。私がこう言うときに優越感を感じる...

2時間のDocker入門チュートリアル

目次1.0 はじめに2.0 Dockerのインストール3.0基本的なDockerコマンド4.0 Do...

JavaベースのMySQLバックアップテーブル操作

コアはmysqldumpとランタイムです操作は実際にはそれほど難しくありません。バックアップ操作を実...