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) <[email protected]>
サブ 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 メタタグの小さなコレクション

推薦する

Centos6.5 の rpm パッケージから mysql5.7 をインストールするときに発生する初期化エラーの解決策

1. rzをサーバーにアップロードして解凍する rz [root@mini2 アップロード]# ta...

MySQL マルチバージョン同時実行制御 MVCC の実装

トランザクション分離レベルの設定 グローバルトランザクション分離レベルを読み取りコミット済みに設定;...

MySQL 学習: データベース テーブルの 5 つの主要な制約を初心者向けに詳しく説明します

目次1. 制約の概念と分類2. 5つの制約の追加と削除2.1 制約を追加する6つの方法2.2 制約を...

Centos7.5 は mysql5.7.24 バイナリ パッケージの展開をインストールします

1. 環境整備:オペレーティング システム: CentOS Linux リリース 7.5.1804 ...

Tomcat での jar のロードに関する異常な問題の分析と解決

現象の説明:プロジェクトでは、Springboot を使用して Web プロジェクトを開始します。起...

Mariadb リモート ログイン構成と問題解決

序文:インストール プロセスについては詳しく説明しません。問題に直接触れましょう。MySQL のリモ...

nginxフロー制御とアクセス制御の実装

nginx トラフィック制御レート制限は非常に便利ですが、Nginx では誤解され、誤って設定される...

Windows での MySQL5 グリーン バージョンのインストールの概要 (推奨)

1 MySQLをダウンロードするダウンロードアドレス: http://downloads.mysq...

CSSアニメーションでポイント獲得効果を実現するアイデアを詳しく解説

最近のプロジェクトでは、ポイントを集める効果を作成する必要があります。 ボスの説明によると、この効果...

MySQL シャーディング入門ガイド

序文リレーショナル データベースは、システムのボトルネックになる可能性が高くなります。単一のマシンの...

Centos8 で NIS ドメイン サービスをセットアップおよび構成するための詳細な手順

目次NIS の紹介ネットワーク環境: 1. 環境の準備(両方のノードが必要) 2.nisマスターサー...

Linuxアカウントファイル制御管理の詳細な手順

Linux システムでは、ユーザーが手動で作成したさまざまなアカウントに加えて、システムまたはプログ...

JSは5つ星の賞賛効果を達成

JS を使用してオブジェクト指向メソッドを実装し、JD.com の 5 つ星レビュー効果を実現します...

ビューポートの基本原理と詳細な使用方法

1. ビューポートの概要モバイル ブラウザは通常、画面よりも幅の広い仮想ウィンドウにページをレンダリ...

MySQLテーブルの自動インクリメント列の初期値をリセットする方法

MySQLテーブルの自動インクリメント列の初期値をリセットする方法1. 問題の説明MySQL データ...