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

推薦する

Dockerでrabbitmqをデプロイする際に発生した2つの問題

1. 背景DockerでRabbitMQをデプロイする際に、次の2つの問題が発生します。問題1: ス...

VMware12 インストール centOS8 構成グラフィック チュートリアルの詳細説明 (vm 仮想マシン インストール centos8 チュートリアル)

数日前に CentOS8 がリリースされました。8 の最初のバージョンですが、今日は VM12 に ...

nginx でのリクエストのカウント追跡の簡単な分析

まずは適用方法を説明します。nginxモジュールにはjtxyとjtcmdの2つがあります。 http...

Ubuntuにmysql5.7.10を手動でインストールする

このチュートリアルでは、UbuntuにMySQL 5.7.10を手動でインストールする手順を参考まで...

階段を転がす特殊効果を実現する JavaScript (jQuery 実装)

皆さんもJDを使ったことがあると思います。ホームページには非常によく見られる機能があります。階段の特...

GDBデバッグMySQL実戦ソースコードコンパイルとインストール

ソースコードをダウンロード git クローン https://github.com/mysql/my...

MySQLの起動失敗の解決策

MySQLの起動失敗の解決策MySQLを起動できませんmysqlを停止した後、いくつかの操作(ホスト...

例を通してMySQLの更新がテーブルをロックするかどうかを判定する

2つのケース: 1. 索引あり 2. 索引なし前提条件:方法: コマンドラインを使用してシミュレート...

Linux システム AutoFs 自動マウント サービスのインストールと構成

目次序文1. サービスプログラムをインストールする2. メイン設定ファイルを書く3. サブ構成ファイ...

フレックスレイアウトにおける画像変形の解決策の詳細な説明

フレックス レイアウトは現在よく使用されるレイアウト方法ですが、場合によっては小さな問題が発生するこ...

HTMLを使用して、IPを制限する投票ウェブサイトの不正行為スキームを実装する

これは、IP アドレスが制限されている投票 Web サイトの不正行為の手口です。この方法は、投票 W...

ウェブサイトをより高く、よりデザイン的に見せる方法

「ウェブサイトを高級感のあるものにするにはどうすればいいでしょうか? それともデザイン重視にすればい...

WeChatアプレットトラック再生の実装と遭遇した落とし穴の詳細な説明

WeChat アプレットの軌跡再生では、主に線描画操作にポリラインを使用し、車の移動操作にマーカーを...

CSS3 で六角形の境界線を実装するサンプルコード

一番外側の boxF は 120 度回転し、2 番目の boxS は -60 度回転し、3 番目の ...

Linux でマウントされたファイルシステムの種類を表示する方法

序文ご存知のとおり、Linux は ext4、ext3、ext2、sysfs、securityfs、...