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

推薦する

CentOS 6.8 に MySQL 8.0.18 をインストールするチュートリアルの簡単な分析 (RPM 方式)

今日は、CentOS 6.8 サーバーに MySQL 8.0.18 をインストールする方法を記録しま...

CSS スティッキーフッタークラシックレイアウトの実装

スティッキーフッターレイアウトとは何ですか?一般的な Web ページのレイアウトは、通常、ヘッダー部...

CSS で子 div の高さを親コンテナの残りのスペースに合わせる方法

1. フローティング方式を使用する効果画像: コードは次のとおりです: (.content の高さは...

モバイルデバイス上の 1px 境界線を解決する最善の方法 (推奨)

モバイル デバイス向けに開発する場合、Retina 画面上で要素の境界線が太くなるという問題に遭遇す...

APP (IOS、Android) を呼び出すモバイル H5 の記述例

iOS 1. URLスキームこのソリューションは基本的に、WeChat、QQ 組み込みブラウザ、QQ...

ウェブサイトのビジュアルデザインの重要なポイント

手工芸デザインからグラフィックデザイン、そしてウェブデザインまで、デザインの原則は同じままですが、私...

Vue は better-scroll を使用して水平スクロール方法の例を実現します

1. スクロールの実装原理better-scroll のスクロール原理は、ブラウザのネイティブスクロ...

div ボックス モデルの使用経験の概要

ボックスモデルの計算<br />マージン + ボーダー + パディング + コンテンツC...

ラベルとスパンの幅設定が無効である問題の解決

デフォルトでは、ラベルとスパンの幅の設定は無効です。一般的に、表示属性は必須ですコードをコピーコード...

docker を使用して influxdb と mongo をデプロイするための一般的なコマンド

Docker ベースのデータベースをデプロイするsudo docker pull influxdb ...

Ubuntu での Subversion (SVN) の詳細なインストールと設定

ソフトウェア開発者であれば、Subversion に精通している必要があります。 Subversio...

JavaScript の遅延読み込み属性パターンを理解する

従来、開発者はインスタンスで必要になる可能性のあるデータに対して JavaScript クラス内にプ...

JavaScript でモバイル モーダル ボックスの効果を実現

この記事では、モバイルモーダルボックス効果を実現するためのJavaScriptの具体的なコードを参考...

VMware 15 仮想マシンに Ubuntu 18.04 をインストールするグラフィック チュートリアル

ここ数年、私は自動化とコンピューターを行ったり来たりしてきました。最近は、機械学習に関連するプロジェ...

Vueはタブ切り替えの虫眼鏡効果を実装します

この記事では、タブ切り替えの虫眼鏡効果を実現するためのVueの具体的なコードを例として紹介します。具...