CentOS8 で Docker を使用してオープンソース プロジェクト Tcloud をデプロイするチュートリアル

CentOS8 で Docker を使用してオープンソース プロジェクト Tcloud をデプロイするチュートリアル

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

1. 仮想マシンに Centos7 をインストールしました。Linux 3.10 カーネルを使用しています。Docker は公式に 3.8 以上が必要としており、3.10 以上が推奨されています (Ubuntu では Linux カーネル 3.8 以上が必要です)

ルートとしてログインし、次のようにカーネルのバージョンを確認します。

uname -a

2. yumパッケージを最新版にアップデートする

yum update

(期間中に確認を選択する必要があり、yを入力するだけです)

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

yum install -y yum-utils device-mapper-persistent-data lvm2

4. yumソースを設定する

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo (Ali ウェアハウス)

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

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

6. Dockerをインストールします。コマンド: yum install docker-ce-version number、私はdocker-ce-18.03.1.ceを選択しました。

yum install docker-ce-18.03.1.ce

(期間中に確認を選択する必要があり、yを入力するだけです)

7. Docker を起動します (コマンド: systemctl start docker)。次に、次のようにブート スタートアップに参加します。

systemctl start docker #啟動docker

systemctl enable docker #起動時にdockerが自動的に起動するように設定する[/code][code]sudo docker run --rm hello-world #dockerでhello-worldを起動する

8. 次の図が表示された場合:

これは、doceker が正常にインストールされたことを意味します。

2. 次に、doceker-composeをインストールします。

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

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

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

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

3. 注意: インストール後にコマンド docker-compose が失敗する場合は、パスを確認してください。 /usr/bin またはパス内の他のディレクトリへのシンボリック リンクを作成することもできます。

例えば:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

4. docker-composeが正常にインストールされているか確認する

doceker-compose --version

3. Gitをインストールして設定する

1. Linux では、Git は yum を使用してインストールされます。これは非常に簡単で、必要なコマンドは 1 行だけです。

yum -y install git

入力:

git --version

Gitがインストールされているかどうか、またバージョン番号を確認する

2. gitを設定します。

git config --global user.name "xxx"git config --global user.email "[email protected]"git config --global core.autocrlf falsegit config --global gui.encoding utf-8

3. 次のコマンドを実行し、最後までEnterキーを押し続けます。

ssh-keygen -t rsa -C [email protected]

4. SSHキーを生成する

cat ~/.ssh/id_rsa.pub

5. GitHubにログインし、設定>SSHand GPG keys>New SSH Keyをクリックし、生成されたキーをKeyにコピーします。

6. 構成が成功したかどうかをテストする

ssh -T [email protected]

7. 構成が成功したことを示す次のメッセージが表示されます。

こんにちは、RoninLee さん。認証は成功しましたが、GitHub ではシェル アクセスが提供されません。

4. バックエンドのデプロイメント

1. 次のコマンドを実行してソースコードを取得します。

git クローン https://github.com/bigbaser/TcloudServer.git

2. TcloudServer\deploy ディレクトリに入り、次のコマンドを使用してすべてをプルします (しばらくお待ちください。プル時間は長いです)

docker-compose プル

3. 次にlocal_config.pyファイルを変更します。

# ここでのアカウントとパスワードは docker-compose.yml で設定されています。次のように変更します。SQLALCHEMY_DATABASE_URI = 'mysql://root:tc123456@mysql:3306/demo?charset=utf8'

4. kong データベースを再初期化します (エラーが発生した場合は再度実行します。成功すると、「データベースは最新です」と表示されます)

$ sudo docker-compose up -d kong_database

// コンテナが起動すると、データベースは ./volumes/kong_database にローカルにマウントされます // ただし、権限の問題により、データベースの初期化は失敗するため、最初にファイルに権限を付与する必要があります $ sudo chmod -R 777 ./volumes/kong_database

$ sudo docker-compose run --rm kong kong 移行 ブートストラップ

5.すべてのプロジェクトを開始する

$ sudo docker-compose up -d

6. 起動ステータスを確認する

$ sudo docker-compose ps

7. すべてのステータスがアップの場合、正常に動作しています。そうでない場合はログを確認してください。

sudo docker logs <名前> ログを表示する

8. konga (kong の管理ページ、http://localhost:9001) を開き、アカウントを登録してログインし、http://kong:8001 で新しい接続を作成します。

9. 成功したら、SNAPSHOT ページに入り、[ファイルからインポート] をクリックして、kong.json ファイルを選択し、[詳細の復元] を入力して、すべてのインポートを選択します。エラーが発生する可能性がありますが、もう一度実行してください。この時点でゲートウェイ サービスが実行されており、アドレスは http://localhost:9000 です。

ps: データベース初期化ファイルは init/init.sql です。sudo docker-compose down -v を使用して volume/mysql マウント ディレクトリを削除し、sudo docker-compose up -d を実行してデータベースを再初期化できます。

5. フロントエンドの展開

1. ノード環境をインストールする

CentOSリポジトリからNode.jsとnpmをインストールする

Node.js と npm は、標準の CentOS リポジトリからインストールできます。

次のコマンドを実行して、nodejs パッケージを提供するモジュールを一覧表示します。

yum モジュール リスト nodejs

CentOS システムにデフォルトの Node.js パッケージをインストールするには、次のように入力します。

sudo yumモジュールをインストールnodejs

次のコマンドを入力します。

node --version #node が正常にインストールされたか確認 npm --version #npm が正常にインストールされたか確認

2. 次のコマンドを使用してフロントエンド コードをプルします。

git クローン https://github.com/bigbaser/Tcloud.git

3. フロントエンドプロジェクトのルートディレクトリでnpm installを実行して依存パッケージをインストールします。

4. 依存パッケージをインストールすると、次のエラーが報告されます。

解決:

4.1. 次のコマンドを入力します。

npm をインストール -g cnpm --registry=https://registry.npm.taobao.org

4.2. ソフトリンクを作成する:

sudo ln -s {npm をインストールしたパス}.npm-global/bin/cnpm /usr/local/bin/cnpm

4.3 入力:

cnpm --version はインストールが成功したかどうかを確認します。

5. config/dev.env.js および index.js ファイル内の BASE_URL アドレスを http://0.0.0.0 に変更します。

6. フロントエンド プロジェクトを実行します。

npm run dev

7. ローカルホスト以外のドメイン名でログインが失敗する場合は、開発者ツールを開いて、アプリケーションの下の Cookies に JWT_TOKEN_TCLOUD_DEV があるかどうかを確認できます。

そうでない場合は、フロントエンドプロジェクトTcloud/src/store/modules/login.jsを見つけて、57行目を次のように変更します。

ドメイン: process.env.NODE_ENV === 'development' ? 'localhost' : COOKIE_DOMAIN

変更後:

ドメイン: COOKIE_DOMAIN

次に、config の下にある dev.env.js を変更し、COOKIE_DOMAIN をフロントエンドが現在アクセスしているドメイン名に変更します。

6. エラーの概要:

1. docker がイメージをプルするときにエラーが発生します。

1.

エラー: https://registry-1.docker.io/v2/ を取得: tcp をダイヤル: このようなホストで registry-1.docker.io を検索

2.

エラー: https://registry-1.docker.io/v2/ を取得: tcp をダイヤル: xxx.xxx.xxx.xxx:xxxx で registry-1.docker.io を検索: 不適切な紹介

3.

デーモンからのエラー応答: https://index.docker.io/v1/search?q=sameersbn&n=25 を取得: tcp をダイヤル: 192.168.65.1:53 で index.docker.io を検索: udp 192.168.65.2:45190->192.168.65.1:53 を読み取り: i/o タイムアウト

デーモンからのエラー応答: Get https://registry-1.docker.io/v2/: net/http: 接続待機中に要求がキャンセルされました (ヘッダー待機中に Client.Timeout を超えました)

2. 問題を分析する:

問題 1 と 2 は、DNS ドメイン名が解決されていないために発生します。

問題 3: ネットワーク接続のタイムアウト。これは多くの要因に関連しています。

3. 解決策:

質問: 1、2:

vi /etc/resolv.conf に DNS アドレスの行を追加します。例: nameserver 114.114.114.114 (この方法は、サーバーを再起動すると無効になります。方法 2 を参照してください。vi /etc/sysconfig/network-scripts/ifcfg-ens33 でネットワーク カード構成ファイルを開き、DNS1="8.8.8.8", DNS2="114.114.114.114" を追加します。

保存後、イメージをプルするコマンドの実行を続けます。これで完了です。

質問: 3:

3.1 dig @114.114.114.114 registry-1.docker.io で利用可能な IP を見つける

3.2 /etc/hosts を変更して、docker.io 関連のドメイン名を他の利用可能な IP に解決するように強制します。

3.3 保存して再試行: docker search sameersbn

よく使用される Docker コマンドをいくつか添付します。詳細な手順については、http://www.docker.org.cn/dockerppt/106.html をご覧ください。

----------------- docker ps 現在実行中のコンテナを表示する

----------------- docker ps -a すべてのコンテナのステータスを表示します

----------------- docker start/stop id/name コンテナを起動/停止します

----------------- docker attach id コンテナに入ります (終了するには exit を使用し、コンテナの実行も停止します)

----------------- docker exec -ti id は疑似ターミナルを起動し、対話形式でコンテナに入ります (コンテナは exit で終了した後も実行を停止しません)

----------------- docker イメージ ローカルイメージを表示

----------------- docker rm id/name コンテナを削除します

----------------- docker rmi id/name はミラーを削除します

----------------- docker run --name test -ti ubuntu /bin/bash ubuntuコンテナをコピーし、名前をtestに変更して実行し、疑似端末対話モードでコンテナに入り、bashを実行します。

----------------- docker build -t soar/centos:7.1 。現在のディレクトリのDockerfileを使用してsoar/centos:7.1という名前のミラーを作成します。

----------------- docker run -d -p 2222:22 --name testsoar/centos:7.1 は、イメージ soar/centos:7.1 を使用して test という名前のコンテナを作成し、バックグラウンド モードで実行して、ポートをホストのポート 2222 にマップします。P パラメータを使用してコンテナを再起動すると、ホスト ポートが変更されます。

参考: https://github.com/bigbaser/TcloudServer/blob/master/deploy/docs/Docker%E9%83%A8%E7%BD%B2.md

要約する

以上が、編集者が紹介したオープンソースプロジェクト Tcloud を CentOS8 上の Docker でデプロイする方法についての説明チュートリアルです。皆様のお役に立てれば幸いです。

以下もご興味があるかもしれません:
  • Centos8 で Docker を使用して Django プロジェクトをデプロイする詳細なチュートリアル
  • CentOS8でのDockerの使い方の詳しい説明

<<:  webpackのモバイル適応ソリューションの概要

>>:  Mysql 8.0.17 winx64バージョンのインストール中に発生した問題を解決する

推薦する

JavaScript で大きなファイルの並列ダウンロードを実装する方法

目次1. HTTP範囲リクエスト1.1 範囲構文2. 大きなファイルをダウンロードする方法2.1 補...

Nginx 経由で Tomcat9 クラスターを構築し、セッション共有を実現する

Nginx を使用して Tomcat9 クラスターを構築し、Redis を使用してセッション共有を実...

nginxとlvsのメリットとデメリット、そして適切な使用環境

まず最初に、ロード バランシングとは何かについて説明します。ロード バランシングとは、リクエストの内...

vue v-for ループ オブジェクトの属性

目次1. ループオブジェクト内の値2. ループオブジェクト3. キーと値のループ1. ループオブジェ...

メタビューポートはiPhoneでウェブページをフルスクリーン表示コントロールします

困り果てて、ふと、私がよく行くSinaのタッチスクリーン版はどうやって作られているのだろう?と考えま...

10分で始めるCSS3アニメーション

導入アニメーションを使用すると、JavaScript や jQuery に依存せずに、純粋な CSS...

シンプルなウェブデザインコンセプトのカラーマッチング

(I)ウェブページのカラーマッチングの基本概念(1)白黒の言葉は永遠のテーマです。誰もそれを悪く言う...

Vue2 と Vue3 でウォッチ リスナーを使用する方法

watch : データの変更を監視する(特定の値の変更イベント) vue2.x データ(){ 戻る ...

CSS の境界線を通して三角形と矢印を実装するサンプルコード

1. CSS ボックスモデルボックスには、余白、境界線、パディング、コンテンツが含まれます境界線の接...

Vueで配列の変更を監視する方法

目次序文ソースコード学習の第一歩はどこから始めればよいでしょうか?写真から始めましょうソースコードを...

【Webデザイン】E-WebTemplates の美しい海外の Web ページ テンプレート (FLASH+PSD ソース ファイル+HTML) を共有します

これらはすべて海外のE-WebTemplates WebサイトからのWebページテンプレートであり、...

MySQL のファントムリード問題を解決する方法

目次序文1. ファントムリーディングとは何ですか? 2. ファントムリーディングの問題点は何ですか?...

操作例 MySQL ショートリンク

MySQL ショートリンクの設定方法1. mysql 接続番号ステートメントコマンドを確認します。 ...

CSS スティッキーフッター実装コード

この記事では、CSS スティッキー フッターの実装コードを紹介し、共有します。詳細は次のとおりです。...

Nginx の break と last の違いの詳細な分析

まずは違いについて話しましょう最後に、書き換えられたルールは、次の場所と一致させるために書き換えられ...