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バージョンのインストール中に発生した問題を解決する

推薦する

ブートストラップ学習体験のまとめ - CSS スタイル デザイン共有

プロジェクトのニーズにより、ブートストラップ フレームワークを慎重に学習する予定です。以前から少しは...

Vue+Springbootでインターフェースシグネチャを実装するためのサンプルコード

1. 実装のアイデアインターフェース署名の目的は、リクエストパラメータが改ざんされていないか、リクエ...

Dockerの基礎

序文: Docker はオープンソースのアプリケーション コンテナ エンジンであり、開発者はこれを使...

バインドを使用してDNSサーバーを設定する方法

DNS(ドメインネームサーバー)は、ドメイン名とそれに対応する IP アドレスを変換するサーバーです...

MySQLでorder byを使用せずにランキングを実装する3つの方法のまとめ

ビジネスを想定: 2位の従業員の給与情報を見るデータベースを作成する emps が存在する場合はデー...

CSS3 のエラスティック レイアウトでの em の使用の概要: 1em は何ピクセルですか?

私は長い間 CSS を使用してきましたが、Web 要素の関連属性を設定するために常に「px」を使用し...

MySQL で B+ ツリー インデックスを使用する利点は何ですか?

この問題を理解する前に、まず MySQL テーブルのストレージ構造を確認し、次にバイナリ ツリー、マ...

count(1)、count(*)、count(列名)の実行の違いの詳細な説明

実施効果: 1. count(1) と count(*)テーブル内のデータ量が多い場合、テーブルを分...

WeChatミニプログラムでEchartとサブパッケージを使用するための完全な手順

序文休日は終わっていますが、それは別の形で(お腹に触れることで)私たちに現れます。ミニプログラムでデ...

単一の MySQL テーブルで数千万のデータを処理するアイデアを共有する

目次プロジェクトの背景改善案データ特性を観察するマルチプロセスアイデアの要約データ処理スキルプロジェ...

MySQL の時間タイプとモードの詳細

目次1. MySQL の時刻型2. タイムゾーンを確認する3. 不正な時間値4. 厳密モード5. 事...

ウェブ画像のホットリンクと座標値を設定するサンプルコード

時には、画像上に複数の領域を設定する必要があります。マウスで画像のさまざまな領域をクリックしてさまざ...

Ubuntu 16.04 64ビット版を3つのステップで32ビットプログラムと互換性を持たせる

ステップ1: システムのアーキテクチャを確認する dpkg --print-architecture...

Mysql の一時テーブルとパーティションテーブルの違いの詳細な説明

一時テーブルとメモリテーブルメモリ テーブルとは、メモリ エンジンを使用するテーブルを指します。テー...