GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerガイド:MySQLを使用したGhostブログとDockerを使用したTraefikのデプロイ

Ghostは、nodejsに基づく強力なオープンソースのパブリッシングおよびブログプラットフォームです。それはうまく設計されており、使いやすいです。ゴーストプラットフォームはJavaScriptで記述されており、ランタイム環境としてnode.jsを使用します。 2013年にMITライセンスの下でリリースされた最初のGhostバージョン。

Traefikは、マイクロサービス用の最新のHTTPリバースプロキシおよびロードバランサーです。 Traefikを使用すると、すべてのマイクロサービスのデプロイが簡単になり、Docker、Swarm Mode、Kubernetes、Amazon ECS、Rancher、Etcd、Consulなどの既存のインフラストラクチャコンポーネントと統合されます。

このチュートリアルでは、GhostをDockerコンテナーとしてインストールおよび構成する方法を段階的に示します。最新のDockerCEバージョンでGhostをインストールして構成し、MySQLをデータベースとして使用し、Traefikをリバースプロキシとして使用します。

前提条件
  • Ubuntu 18.04 LTS
  • root権限
何をするか
  1. Ubuntu18.04LTSにDockerCEをインストールする
  2. root以外のユーザー用にDockerをセットアップする
  3. DockerComposeをインストールする
  4. ゴーストスタックの構成
    • カスタムネットワークを作成する
    • プロジェクトディレクトリを作成する
    • MySQLコンテナの作成と構成
    • Traefikリバースプロキシの作成と構成
    • ゴーストコンテナの作成と構成
  5. MySQLとTraefikを使用してGhostをデプロイする
  6. テスト
ステップ1-Ubuntu18.04LTSにDockerCEをインストールします

このチュートリアルで行う最初のステップは、システムの最新のdocker-ceバージョンをインストールすることです。 docker-ceバージョンは、公式のdockerリポジトリからインストールできます。

dockerkeyとdocker-ceリポジトリを追加します。

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

このコマンドは、システム上のすべてのリポジトリを自動的に更新します。

次に、以下のaptコマンドを使用してdockerをインストールします。

sudo apt install docker-ce -y

インストールが完了したら、Dockerサービスを開始し、システムの起動時に毎回起動できるようにします。

systemctl start docker
systemctl enable docker

最新のdocker-ceバージョンがUbuntu18.04システムにインストールされています。

ステップ2-非rootユーザー用のDockerをセットアップする

このガイドでは、すべてのコンテナマイクロサービスが通常/非rootユーザーで実行されます。そのため、Dockerコンテナを実行し、root権限に対してsudoコマンドを実行できるようにユーザーを構成する必要があります。

'hakase'という名前の新しいユーザーを作成し、パスワードを作成します。

useradd -m -s /bin/bash hakase
passwd hakase

次に、「hakase」ユーザーを「sudo」グループと「docker」グループに割り当てます。

usermod -a -G root hakase
usermod -a -G docker hakase

そして、Dockerサービスを再起動します。

systemctl restart docker

'hakase'は、dockerコンテナーを実行し、root権限に対してsudoコマンドを実行できるようになりました。

ユーザー「hakase」としてログインし、dockerhello-worldコンテナーを実行します。

su - hakase
docker run -it hello-world

結果は次のとおりです。

ステップ3-DockerComposeをインストールする

このチュートリアルでは、Githubリポジトリのバイナリファイルからdockercompose1.21をインストールします。

docker-composebinaryを「/usr/ local/bin」ディレクトリにダウンロードします。

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

そして、ファイルのパーミッションを変更して、「docker-compose」ファイルを実行可能にします。

sudo chmod +x /usr/local/bin/docker-compose

dockercomposeがインストールされています。以下のコマンドを使用して確認してください。

docker-compose version
docker version

Docker-compose1.21とDocker-ce1.18がインストールされています。

ステップ4-ゴーストスタックを構成する

このステップでは、Dockerを構成し、ゴーストインストール用の新しいdocker-composeファイルを作成します。

新しいdockerカスタムネットワークを作成し、MySQLデータベース、Traefikリバースプロキシ、Ghostブログ自体を含む3つの主要なサービスを含む新しいdocker-composeymlファイルを作成します。

カスタムネットワークを作成する

以下のdockernetworkコマンドを使用して、使用可能なdockernetworkを表示します。

docker network ls

'traefiknet'という名前のtraefikリバースプロキシ用の新しいカスタムDockerネットワークを作成します。

docker network create traefiknet

次に、Dockerシステムで利用可能なネットワークをもう一度確認します。

docker network ls

'traefiknet'という名前のTreafikのカスタムネットワークが作成されました。

プロジェクトディレクトリを作成する

dockerカスタムネットワークを作成した後、「ghost」という名前の新しいプロジェクトディレクトリを作成し、新しいdocker-compose.ymlファイルを作成します。

'hakase'ユーザーにログインします。

su - hakase

新しい「ghost」ディレクトリを作成し、作業ディレクトリをそのディレクトリに変更します。

mkdir ghost/
cd ghost/

そして、新しいdocker-composeファイルを作成します。

touch docker-compose.yml

MySQLサービスの作成と構成

MySQLは私たちが作成したい最初のサービスであり、以下の構成でMySQLコンテナを作成したいと思います。

  • MySQL5.7ドッカーイメージを使用します。
  • MySQLデータディレクトリをローカルのDockerホストディレクトリにマウントします。
  • ローカル内部ネットワークでMySQLサービスを実行します。
  • MySQLユーザーとパスワードを構成します。
    • MySQLルートパスワード:mypassword
    • ユーザーが「ghost」でパスワードが「ghostdbpass」の「ghostdb」という名前のゴーストのデータベース
  • MySQLコンテナの名前は「mysql」になります。

「ghost」ディレクトリ内に「data」という名前の新しいディレクトリを作成し、「docker-compose.yml」ファイルを編集します。

mkdir -p data/
vim docker-compose.yml

以下の設定を貼り付けてください。

version: '3.3'

services:

  mysql:
    image: mysql:5.7
    restart: always
    volumes:
      - ./data:/var/lib/mysql
    labels:
      - "traefik.enable=false"
    networks:
      - internal
    environment:
      MYSQL_ROOT_PASSWORD: mypassword
      MYSQL_USER: ghost
      MYSQL_PASSWORD: ghostdbpass
      MYSQL_DATABASE: ghostdb
    container_name: mysql

保存して終了します。

Traefikリバースプロキシの作成と構成

MySQLサービスを作成した後、traefikリバースプロキシコンテナを作成して構成します。

'docker-compose.yml'スクリプトを編集する前に、'traefik.toml'という名前の新しいtraefik構成を作成する必要があります。

vim traefik.toml

以下にtraefikルール設定を貼り付けます。

#Traefik Global Configuration
debug = false
checkNewVersion = true
logLevel = "ERROR"

#Define the EntryPoint for HTTP and HTTPS
defaultEntryPoints = ["https","http"]

#Define the HTTP port 80 and
#HTTPS port 443 EntryPoint
#Enable automatically redirect HTTP to HTTPS
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]

#Enable Traefik Dashboard on port 8080
#with basic authentication method
#hakase and password
[entryPoints.dash]
address=":8080"
[entryPoints.dash.auth]
[entryPoints.dash.auth.basic]
    users = [
        "hakase:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.",
    ]

[api]
entrypoint="dash"
dashboard = true

#Enable retry sending a request if the network error
[retry]

#Define Docker Backend Configuration
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "hakase-labs.io"
watch = true
exposedbydefault = false

#Letsencrypt Registration
#Define the Letsencrypt ACME HTTP challenge
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"

保存して終了します。

次に、SSLLetsencrypt構成'acme.json'の新しいファイルを作成する必要があります。これは、すべてのletsencryptがログを生成するために使用されます。

空白の「acme.json」ファイルを作成し、権限を600に変更します。

touch acme.json
chmod 600 acme.json

次に、「docker-compose.yml」スクリプトを編集して、traefikサービス構成を追加します。

  • 最新のtraefikdockerイメージを使用します。
  • コンテナには「traefik」という名前が付けられます
  • カスタムネットワーク「traefiknet」を使用し、HTTPポートとHTTPSポートを公開します。
  • dockersockファイルとtraefik構成'traefik.toml'および'acme.json'をマウントします
  • Dockerラベルを使用してtraefikダッシュボードのURLとバックエンドを定義しました。

'docker-compose.yml'を編集します。

vim docker-compose.yml

以下にtraefikサービス構成を貼り付けます。

  traefik:
    image: traefik:latest
    command: --docker
    ports:
      - 80:80
      - 443:443
    labels:
      - "traefik.enable=true"
      - "traefik.backend=dashboard"
      - "traefik.frontend.rule=Host:traef.hakase-labs.io"
      - "traefik.port=8080"
    networks:
      - traefiknet
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
      - ./acme.json:/acme.json
    container_name: traefik
    restart: always

保存して終了します。

ゴーストサービスの作成と構成

traefikリバースプロキシを構成した後、メインのゴーストサービス構成を作成します。

作成する構成の詳細。

  • ゴーストv1と小さなDockerアルパインバージョンを使用します。
  • ゴーストコンテンツディレクトリを「blog」という名前のローカルディレクトリにマウントします。
  • ゴーストサービスは、ドメイン名「gho.hakase-labs.io」のデフォルトのポートで実行されます。これは、Dockerラベルによる構成です。
  • ゴーストサービスは、内部とtraefiknetの2つのDockerネットワークを使用します。
  • mysqlコンテナ構成からMySQLデータベースの詳細を構成しています。
  • そして、traefikとMySQLコンテナが稼働しているときにゴーストが開始されます。

'blog'という名前の新しいディレクトリを作成し、'docker-compose.yml'ファイルを編集します。

mkdir -p blog/
vim docker-compose.yml

以下の設定を貼り付けてください。

  ghost:
    image: ghost:1-alpine
    restart: always
    ports:
      - 2368
    volumes:
      - ./blog:/var/lib/ghost/content
    labels:
      - "traefik.enabled=true"
      - "traefik.backend=ghost"
      - "traefik.frontend.rule=Host:gho.hakase-labs.io"
      - "traefik.docker.network=traefiknet"
      - "traefik.port=2368"
    networks:
      - internal
      - traefiknet
    environment:
      database__client: mysql
      database__connection__host: mysql
      database__connection__user: ghost
      database__connection__password: ghostdbpass
      database__connection__database: ghostdb
    container_name: ghost
    depends_on:
      - mysql
      - traefik

networks: traefiknet: external: true internal: external: false

保存して終了します。

これで、以下に示すようにすべてのディレクトリと構成が取得されました。

tree

ステップ5-MySQLとTraefikを使用してGhostをデプロイする

すべてのゴーストスタックサービスをビルドして実行するには、以下のコマンドを使用できます。

docker-compose up -d

完了したら、実行中のすべてのサービスを確認します。

docker-compose ps

そして、以下が結果です。

エラーが発生した場合は、以下のコマンドを使用してコンテナログを確認してください。

docker-compose logs mysql
docker-compose logs traefik
docker-compose logs ghost

MySQLとTraefikリバースプロキシを使用したゴーストスタックが稼働しています。

ステップ6-テスト

そのURLでTraefikダッシュボードを開きます。私のものはhttp://traef.hakase-labs.io/

'traefik.toml'ファイルにユーザーとパスワードを使用してログインします。

そして、以下はTraefikダッシュボードです。

Ghostをインストールする場合は、アドレスバーにゴーストURLを入力します。私のものは http://gho.hakase-labs.io/

そして、ゴーストのホームページが表示されます。

次に、管理ページにアクセスして、新しい管理ユーザーを設定および構成します。私のURLは次のとおりです:http://gho.hakase-labs.io/admin/

緑色のボタンをクリックして、新しい管理者ユーザーを作成します。

詳細ユーザー、パスワード、メールアドレスを入力し、緑色のボタンをもう一度クリックします。

新しいメンバーまたはユーザーを招待するには、[後でこれを行います。]リンクをクリックします。

これで、Ghostダッシュボードが表示されます。

サンプル投稿を作成すると、次のようになります。

Docker環境でのMySQLデータベースとTraefikリバースプロキシを使用したGhostブログのインストールが正常に完了しました。

参照
  • https://hub.docker.com/_/ghost/
  • https://docs.traefik.io/

Docker
  1. Ubuntu16.04にApacheとSSLを使用してGhostブログソフトウェアをインストールする方法

  2. Dockerを使用してWordPressをインストールする方法、わかりやすいガイド

  3. DockerコンテナでMySQLを実行する方法:シンプルでわかりやすいガイド

  1. DockerでのPostgreSQLの実行、クイックで実用的なガイド

  2. Dockerを使用してOpenVPNサーバーをインストールしてホストする方法

  3. Dockerを使用してGhostインスタンスをセルフホスティングするための7つの便利なヒント

  1. MySQLイベントおよびイベントスケジューラガイド

  2. Dockerを使用してMongoDBをデプロイおよび管理する方法

  3. 例を含むMySQL日付関数ガイド