docker を使用して crownblog プロジェクトを Alibaba Cloud にデプロイする方法

docker を使用して crownblog プロジェクトを Alibaba Cloud にデプロイする方法

フロントエンドプロジェクトのパッケージ化

  • .env.productionを見つけて、自分のIPまたはドメインアドレスに変更します。
  • npm run buildコマンドを実行してdistファイルを生成します。
  • dist ファイルをバックエンド プロジェクト ディレクトリにコピーします (フロントエンド プロジェクトをデプロイするには、go の組み込み http サービスを使用します)

バックエンドプロジェクトの展開

1. サーバー構成

  • Alibaba Cloud Serverを購入する
  • サーバーのポート8085と3306を開きます
  • Xshellを使用してサーバーにログインする

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

公式ドキュメント: docs.docker.com/get-docker/

Ubuntu 18.04 LTSを例に、表示するシステムを選択します。

古いバージョンをアンインストールする

sudo apt-get 削除 docker docker-engine docker.io containerd runc

パッケージリストを読み込んでいます...完了
依存関係ツリーの構築    
状態情報を読み込んでいます...完了
パッケージ「docker-engine」はインストールされていないため、削除されません
パッケージ「docker」はインストールされていないため、削除されません
パッケージ「containerd」はインストールされていないため、削除されません
パッケージ「docker.io」はインストールされていないため、削除されません
パッケージ「runc」はインストールされていないため、削除されません
アップグレードされたものが 0 個、新規にインストールされたものが 0 個、削除されたものが 0 個、アップグレードされていないものが 3 個。

新しいバージョンのリポジトリを追加する

sudo apt-getアップデート

udo apt-get install \
  apt-transport-https \
  ca証明書\
  カール\
  gnupgエージェント\
  ソフトウェアプロパティ共通

公式GPGキーを取得する

# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key を追加 -

キーを確認します。出力が次のようであれば、正しいです。

# apt-key フィンガープリント 0EBFCD88

出版 rsa4096 2017-02-22 [SCEA]
   9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ 不明] Docker リリース (CE deb) <docker@docker.com>
サブ rsa4096 2017-02-22 [S]

倉庫住所の追加(国内倉庫からのダウンロードの方が速い)

$ sudo aptリポジトリを追加\
  "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
  $(lsb_release -cs) \
  安定した"

リポジトリを更新してインストールする

 $ sudo apt-getアップデート

 $ sudo apt-get install docker-ce docker-ce-cli containerd.io

確認するにはhello-worldを実行します

$ docker pull hello-world
$ docker run hello-world
#次の情報が表示され、Docker が正常にインストールされ、正常に実行できることがわかります。Docker からこんにちは!
このメッセージは、インストールが正常に動作していることを示しています。
このメッセージを生成するために、Docker は次の手順を実行します。

  1. Docker クライアントが Docker デーモンに接続しました。
  2. Docker デーモンは Docker Hub から「hello-world」イメージを取得しました。(amd64)
  3. Docker デーモンは、そのイメージから新しいコンテナを作成し、現在読み取っている出力を生成する実行可能ファイルを実行します。
  4. Docker デーモンはその出力を Docker クライアントにストリーミングし、Docker クライアントはそれをターミナルに送信しました。
 もっと野心的なことに挑戦するには、次のコマンドで Ubuntu コンテナを実行できます。
 $ docker run -it ubuntu bash
 無料の Docker ID を使用して、イメージを共有したり、ワークフローを自動化したりすることができます。
 参考:
 その他の例やアイデアについては、以下をご覧ください。
 詳しくはこちら

Alibabaミラーステーションを使用してスピードアップ

アドレス: mirrors.aliyun.com/

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "レジストリミラー": ["https://XXXyourid.mirror.aliyuncs.com"]
}
終了
sudo systemctlデーモンリロード
sudo systemctl dockerを再起動します

3. イメージのプルと作成、コンテナオーケストレーション

MySQL サーバーミラー

まず、いくつかの理由から、Docker を使用して MySQL をデプロイしないことを強くお勧めします。

  • データ ボリュームをマップする必要があります。Docker コンテナー内でデータベース データを実行しないでください。そうしないと、コンテナーが削除されるとすべてのデータがクリアされます。したがって、データの永続性は必須です。 ! ;
  • これは IO には役立ちません。データはコンテナ内で 1 回、バインドされたボリューム内で 1 回読み書きされるため、読み取りと書き込みの負荷が 2 倍になり、パフォーマンスが低下します。

dockerにmysqlをデプロイする必要がある場合は、次のようにします。

#まず、mysql が検索できることを確認します。この手順をスキップするか、dockerhub.com で docker search mysql を検索してください。

#イメージをプルします docker pull mysql #デフォルトでは最新バージョンをプルします。特定のバージョンが必要な場合は、イメージの後にタグを追加できます。特定のバージョン情報はdockerhub.comで確認できます #特定のバージョンをプルします。たとえば、8.0.22をプルします(バージョン番号は公式バージョン番号である必要があります。そうでない場合は見つかりません)
docker pull mysql:8.0.22

#この時点で、プルされたミラードッカーイメージを表示できます

#イメージを実行します docker run -d -p 3306:3306 -v /crownBlog/datadir:/var/lib/mysql --name crownBlog-mysql -e MYSQL_ROOT_PASSWORD=123456 mysql

# -dはバックグラウンドで実行し、コンテナIDを返すことを意味します
# -p 3006:3306 はポート マッピングを示します。具体的には -p ホスト ポート: コンテナ ポートです。# --name はコンテナに名前を付けます。# -e MYSQL_ROOT_PASSWORD=password は、mysql ルート管理者のパスワードを設定します。# -v /crownBlog/datadir:/var/lib/mysql はデータ ボリュームを追加します。/crownBlog/datadir はホストのデータベース パスです。/var/lib/mysql はコンテナ内のデータベース パスです。この手順は非常に重要です。#コンテナ構成を入力します。docker exec -it crownBlog-mysql bash

ルート@ed9345077e02:/#mysql -u ルート -p
パスワードを入力してください:
MySQL モニターへようこそ。コマンドは ; または \g で終わります。
MySQL接続IDは8です
サーバーバージョン: 8.0.22 MySQL コミュニティサーバー - GPL
Copyright (c) 2000, 2020, Oracle およびその関連会社。無断複写・転載を禁じます。
Oracle は、Oracle Corporation およびその関連会社の登録商標です。
その他の名称はそれぞれの所有者の商標である場合があります。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

マイSQL>

# 以降は通常のmysqlと同じ操作になります。

4. データベースを作成し、データファイルをインポートする

  • Xftp を使用してサーバーに接続する
  • ローカルSQLファイルをサーバーにアップロードする
  • docker cpコマンドを使用してSQLファイルをコンテナにコピーします。
docker cp crownBlog.sql crownBlog-mysql:/home 
(docker cp の最初のパラメータはローカルファイルまたはフォルダを指定し、2 番目のパラメータはコンテナとコンテナ内のターゲットフォルダを指定します)

コンテナにログインし、mysql にログインします: docker exec -it crownBlog-mysql mysql -uroot -p123456

SQL ファイルを実行します: source /home/crownBlog.sql

5. クラウンブログプロジェクトミラーを作成する

Xftpを使用してバックエンドコードをサーバーにアップロードし、コードを入力してDockerfileファイルを書き込む

golang:latest から
go env -w GO111MODULE=onを実行します
go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct を実行します。

WORKDIR $GOPATH/src/crownBlog
コピー . $GOPATH/src/crownBlog

go build を実行します。

エクスポーズ8085

エントリーポイント ["./blog"]   

crownblogの設定ファイルを設定する
Modがリリースに変更されました

srv はサーバ IP に変更され、データベース ホストはマッピングされたデータベース IP に変更されます。

6. 画像を生成する

Dockerfileディレクトリ内

docker build を実行します。
$ docker run -d -p 8085:8085 --name crownblog crownblog

 
#サーバーIP:8085にアクセスするとウェブサイトにアクセスできます

docker を使用して crownblog プロジェクトを Alibaba Cloud にデプロイする手順についてはこれで終わりです。docker を使用して crownblog を Alibaba Cloud にデプロイする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker イメージの作成、アップロード、プル、およびデプロイ操作 (Alibaba Cloud を使用)
  • Alibaba Cloud ESC サーバー シングルノード MySQL の Docker デプロイメント
  • Alibaba Cloud Linux CentOS 7 Docker デプロイメントでは、gogs を使用して独自の Git サーバーを構築します。

<<:  CSS3 アドバンス LESS で星空アニメーションを実装するサンプルコード

>>:  HTML メタタグの小さなコレクション

推薦する

Vueカスタムカプセル化ボタンコンポーネント

Vueボタンコンポーネントのカスタムカプセル化コードは参考用です。具体的な内容は次のとおりです。ボタ...

MySQLのスペースをクリーンアップするいくつかの具体的な方法

目次序文1. ファイルのディスク使用量を確認する1.1 ディスク容量の使用状況を確認する1.2 ディ...

Linux で libudev を使用して USB デバイスの VID と PID を取得する方法

この記事では、libudev ライブラリを使用して hidraw デバイスにアクセスします。 lib...

Docker可視化管理ツールであるDocker UIの使用

1. DockerUIの紹介DockerUI は Docker API をベースとしており、Dock...

ES6 の Set および WeakSet コレクションの詳細な説明

目次セットは値が重複しない特別なコレクションです。セットコレクション基本API独自の価値判断セットを...

11 の素晴らしい JavaScript コード リファクタリングのベスト プラクティスの概要

目次1. 関数の抽出2. 重複した条件付きスニペットを結合する3. 条件分岐文を関数に抽出する4. ...

MySQL のグループ分けの例

mysql のような php switch case ステートメント。 xxフィールドを選択、ケース...

Nginx は rtmp ライブ サーバーの実装コードを構築します

1. nginxソースディレクトリに新しいrtmpディレクトリを作成し、git clone http...

Nginx で 403 forbidden を解決するための完全な手順

ウェブページに403 Forbiddenと表示されるNginx (yum インストール ログは通常 ...

Tomcat メモリ オーバーフロー問題の解決経験

少し前に、製品バージョンをテスト用にテスターに​​提出したのですが、テスト結果はまったく予想外のもの...

Docker コンテナにおける Patroni の簡単な分析

目次イメージの作成ファイル構造Dockerファイルエントリポイント関数ファイルを生成するイメージを構...

Saltstack に Zabbix サービスをデプロイする方法を説明します

目次SaltstackがZabbixサービスを導入httpd、mysql、phpをインストールするh...

JS 非同期スタック トレース: await が Promise よりも優れている理由

概要async/await と Promise の基本的な違いは、await fn() は現在の関数...

Ubuntu 14.04 で QT5 をインストール、設定、アンインストールするための詳細な手順

1. 以前 QT5.13 バージョンをダウンロードしましたが、インストール後、Qtcreator を...

プレフィックスケースを削除する Nginx リバース プロキシ構成のチュートリアル

nginx をリバース プロキシとして使用する場合、リクエストをそのまま次のサービスに転送するだけで...