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 メタタグの小さなコレクション

推薦する

Reactにおける不変値の説明

目次不変の値とは何ですか?不変の値を使用するのはなぜですか? Reactのパフォーマンス最適化は不変...

検証コードケースのJavaScript実装

この記事では、検証コードの効果を実現するためのJavaScriptの具体的なコードを参考までに共有し...

MySQL のあまり知られていないソート方法

序文ORDER BY 字段名升序/降序、このソートステートメントは皆さんご存知だと思いますが、特殊な...

Reactマウスの複数選択機能の設定方法

一般的に、リストには選択機能があり、単一選択、二重選択、複数選択が非常に一般的です。カスタム ループ...

CentOS 7 での Docker プロキシの設定 (Linux での Systemd サービスの環境変数設定)

Docker デーモンは、 HTTP_PROXY 、 HTTPS_PROXY 、およびNO_PRO...

Linux ソースコードからのソケット (TCP) バインドの詳細な説明

目次1. 最も単純なサーバー側の例2. バインドシステムコール2.1、inet_bind 2.2、i...

Web デザイン TabIndex 要素

TabIndex は、Tab キーを押して、定義された TabIndex 要素を順番に取得し、各要素...

HTML ドロップダウン ボックスの SELECT オプションを変更する複数の方法

フォームが送信されると、返された HTML ページが再レンダリングされ、SELECT コントロールの...

背景画像の配置におけるbackground-position属性の自己理解

最近、プロジェクトではラベルやボタンなどの断片的な画像をたくさん使用する必要があります。また、CSS...

PHP スケジュールバックアップ MySQL および mysqldump 構文パラメータの詳細

まず、MySQL バックアップ コマンド mysqldump の一般的な操作例をいくつか紹介します。...

Nginx Rewriteモジュールを使用するいくつかのシナリオ

アプリケーションシナリオ1: ドメイン名ベースのリダイレクト会社の古いドメイン名は www.accp...

MacでのMySQL5.7.22のインストール手順

1. インストールパッケージを使用してMySQLをインストールします(オンラインダウンロードは遅すぎ...

知っておくべきHTML最適化テクニック

Web ページのパフォーマンスを向上させるために、多くの開発者は、JavaScript、画像の最適化...

ウェブサイトにダークモード切り替え機能を持たせるための純粋なCSSフリー実装コード

序文ダーク モードの概念は、 MacOS系統のMojaveに由来し、ユーザーが選択できる 2 つのス...

JavaScript のコールバック関数の理解と使用

目次概要コールバックまたは高階関数とは何ですか?コールバック関数はどのように機能しますか?コールバッ...