UbuntuのDockerで「WordPress+mysql」を運用する方法

DOCKER
この記事は 3 分で読めます。
概要

Linux UbuntuのDockerで「WordPress+mysql」を個人サーバーで運用する方法を紹介します。

この記事の読者層

LinuxユーザーがDockerを利用してWordPressを利用したい方

目次

WordPressをUbuntuのDocker上で構築する方法

過去の記事で仮想環境プラットフォーム「Docker」をLinux Ubuntuにインストールする方法を紹介しました。

本記事では、既に「Docker」がUbuntu Linuxにインストールされている前提で話を進めていきます。

■「Docker」をUbuntuにインストールする方法を知りたい方は以下の記事をご参照ください。

■WordPressをホスト自身にインストールする方法を知りたい方は以下の記事をご参照下さい。

以下にDockerを利用して「wordpress」をLinux ubuntu上で構築する方法を示します。

Dockerの環境
  • Docker (Ubuntu 18.04 LTS)
    バージョン 20.10.21
  • WordPress
    バージョン 6.1.1
  • mySQL
    バージョン 5.7

mySQLとWordPressのイメージのダウンロード

イメージのダウンロード

以下のコマンドでDocker hubの公式イメージから「mysql」と「wordpress」のイメージをダウンロードします。

Ubuntuのターミナル上から以下のdocker pullコマンドを実行して、Docker用の各イメージをダウンロードします。

% sudo docker pull mysql
% sudo docker pull wordpress

必要なイメージがダウンロードされているか以下のように確認します。

sdocker images」か「docker image ls」コマンドのどちらかを打てば以下のようにimageリストが見えます。

% sudo docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
mariadb      10.5      819fb13996d3   3 days ago    402MB
mariadb      latest    a748acbaccae   3 days ago    410MB
mysql        5.7       d410f4167eea   5 days ago    495MB
wordpress    latest    8b105c533d0c   5 days ago    615MB
mysql        latest    a3a2968869cf   12 days ago   538MB
nextcloud    latest    eff70b1472d7   13 days ago   994MB

ここで、必要な「mysql:latest」と「wordpress:latest」が既に表示されている場合には問題にはダウンロード済みです。

次に、「docker ps」コマンドで実行中のコンテナがあるか確認します。

コンテナが実行中であれば「docker stop」コマンドと「dockor rm」コマンドを利用してすべてのコンテナを削除して置いて下さい。mysqlなどのポートの重複があるとエラーがでてしまうためです。ポートの重複については後述します。

% docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

doker-compose用のyml定義ファイルの確認

次に、doker-compose用の定義ファイルを作成します。

設定内容は以下の基本設計になります。(mySQL:latestの場合の設定です。)

1) mySQL:latest

  • images名:mysql
  • volume名:db
  • コンテナ名:db-container
  • port番号:3306→5432 既存のポート番号とのバッティングを防ぐために5432にしておきます。
  • ホスト側への保存フォルダ:~/db (コンテナ側のフォルダ/var/lib/mysql)

(2) wordpress:latest

  • images名:wordpress
  • volume名:wordpress
  • コンテナ名:wordpress-app
  • port番号:80→8080
  • ホスト側への保存フォルダ:~/wordpress (コンテナ側のフォルダ/var/www/html)

以下設定ファイル

version: '3'
volumes:
 db:
 wordpress:

services:
 db:
  restart: always
  image: mysql
  container_name: db-container
  ports:
   - 5432:3306
  expose:
   - 5432
  volumes:
   - ./db:/var/lib/mysql
  environment:
   - MYSQL_ROOT_PASSWORD: rootpass
   - MYSQL_PASSWORD: userpass
   - MYSQL_DATABASE: wordpress
   - MYSQL_USER: wordpress

 wordpress:
  restart: always
  container_name: wordpress-app
  image: wordpress
  volumes:
   - ./wordpress:/var/www/html
  ports:
   - 8080:80
  depends_on:
  - db
  environment:
  - WORDPRESS_DB_PASSWORD: userpass
  - WORDPRESS_DB_NAME: wordpress
  - WORDPRESS_DB_USER: wordpress
  - WORDPRESS_DB_HOST: db

設定の解説と注意点

(1)既存のmysqlのポート番号3306は本体サーバー上で使用されている時があるため、上記では別ポート番号5432を使用する設定です。

mysqlのデータベース側「ports: 5432:3306」として、外部通信「expose: 5432」で宣言します。

   wordpress側では、ポート番号5432を通してmysqlを使用します。

   mySQL:laetstの場合は、環境変数を「MYSQL_HOST=db」とします。

mySQL:l5.7の場合は、環境変数を「MYSQL_HOST=db:5432」とします。

(2) http用のポート番号80も利用されている場合を考慮して、8080とします。

コンテナ化

「docker-compose」コマンド

最終的に、以下のコマンド「docker-compose up -d」を入力してバックグラウンドでスタートして終了です。

ここで、エラーがでないか「docker-compose up 」としてフォアグラウンド処理で確認してみるのも良いかと思います。

$ docker-compose up -d
[+] Running 2/2
 ? Container db-container   Started                                       
 ? Container nextcloud-app  Started

動いているか確認のため、Docker-compose psコマンドでのコンテナ実行状況を確認すると2つのコンテナのSTATUSが「running」状態であることを確認できます。

 sudo docker compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
db-container        "docker-entrypoint.s…"   db                  running             0.0.0.0:5432->3306/tcp, :::5432->3306/tcp
wordpress-app       "docker-entrypoint.s…"   wordpress           running             0.0.0.0:8080->80/tcp, :::8080->80/tcp

ブラウザ上からアクセスしWordPressを立ち上げる

その後、適当なブラウザ上でURL「http://localhost:8080」を入力すると以下のようにwordpressが起動します。

うまくいくと下記の設定画面が表示される。

Docker WordPress MySQL

言語を「日本語」にして「Continue」ボタンを押します。

Docker WordPress MySQL

「データベース名」と「ユーザー名」と「パスワード」と「データベースのホスト名」を入力し「送信」ボタンを押します。

問題がなければ下記のような画面に移動して、サイトタイトルとユーザー名(webアクセス用)とパスワード、メールアドレスを入力して「WordPessのインストール」ボタンを押して下さい。

Docker WordPress MySQL

これでインストールは終了です。

起動しない場合の対処方法

以下のようにデータベースに問題が起こる場合があります。

Docker WordPress MySQL

(1) データベースの設定に問題がある場合が多いため再度パスワード等を確認してみてください。

必要であれば、コンテナイメージに入って修正もできます。

(2)「error establishing a database connection」と出る場合があります。この場合、過去のデーターフォルダが残っている場合があるため、接続用の設定ファイルがある/dbや/wordpress内を削除して再起動させるとうまく行きます。

詳細なWordPress設定の方法は以下の記事を参照下さい。

Docker composeの停止

Composeの停止は以下のコマンドでできます。このとき、networkと2つのコンテナが停止します。

ファイルを指定してdocker composeを行っているため、終了時も -f (ファイル名)を加えてdownします。すると2つのコンテナと1つのネットワークのコンテナを下ろしてくれます。

sudo docker compose -f docker-compose1.yml down
[+] Running 3/3
 ? Container wordpress-app  Removed                                                                                                                              1.4s
 ? Container db-container   Removed                                                                                                                              0.2s
 ? Network user_default   Removed

まとめ

本記事のまとめ

本記事のまとめは、

Linux UbuntuのDockerで「wordpress+mysql」を運用する方法インストール方法を紹介しました。

関連リンク

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次