DockerでJoomla!

DockerでJoomla!

現在、3つのサイトを WordPress で立ち上げていますが、ふと、Joomla! に移せないかなと思いたち、まずは Docker でローカル環境を立ち上げてみようと思います。

なお、Joomla! の名称は正式にはエクスクラメーションマークが付いています。

01compose.yaml で一発インストール

まず簡潔に Docker で最新バージョンの Joomla を立ち上げる手順をまとめます。

適当な場所に Joomla 用のディレクトリをつくり、次の compose.yaml ファイルを保存します。compose.yaml は Docker Hub の Docker Official Image に掲載されているものに若干の修正を加えています。

Docker Compose は V2 です。Joomla のバージョンは 5.0.3、データベースは MariaDB10.5 です。

services:
  joomla:
    image: joomla:5.0.3-php8.1-apache
    restart: always
    links:
      - joomladb:mysql
    ports:
      - 8000:80
    environment:
      JOOMLA_DB_HOST: joomladb
      JOOMLA_DB_PASSWORD: joomla
    volumes:
      - ./html:/var/www/html

  joomladb:
    image: mariadb:10.5
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: joomla
    volumes:
      - ./mysql:/var/lib/mysql

同じディレクトリで $ docker compose up -d と打ちますと、Docker イメージがダウンロードされ Joomla と MariaDB のコンテナが作成されます。

$ docker compose up -d
[+] Running 2/3
 ⠇ Network joomla_default       Created                                    0.8s 
 ✔ Container joomla-joomladb-1  Started                                    0.4s 
 ✔ Container joomla-joomla-1    Started                                    0.7s 
$ ls -l
合計 24
-rw-rw-r--  1 imuza            imuza             414  3月  6 20:29 compose.yaml
drwxr-xr-x 18 www-data         www-data         4096  3月  6 20:31 html
drwxr-xr-x  4 systemd-coredump systemd-coredump 4096  3月  6 20:31 mysql

ディレクトリ内を見てみますと、html ディレクトリと mysql ディレクトリが出来ています。これでブラウザから http://localhost:8000 にアクセスすれば Joomla のインストーラーが立ち上がります。

02一般ユーザーに所有者を変更する

ただ、この状態ですとディレクトリの所有者が www-data と systemd-coredump になっており、後々一般ユーザーでは触れなくなりますので、ここで一旦 docker を終了させてディレクトリの所有者を一般ユーザーに変更します。

$ docker compose down
[+] Running 3/3
 ✔ Container joomla-joomla-1    Removed                                    1.6s 
 ✔ Container joomla-joomladb-1  Removed                                    0.5s 
 ✔ Network joomla_default       Removed                                    0.3s 
$ sudo chown -R imuza.imuza html/
$ sudo chown -R imuza.imuza mysql/

次に joomla とデータベースを一般ユーザーで立ち上げるように compose.yaml を書き換えます。

services:
  joomla:
    image: joomla:5.0.3-php8.1-apache
    restart: always
    links:
      - joomladb:mysql
    ports:
      - 8000:80
    environment:
      JOOMLA_DB_HOST: joomladb
      JOOMLA_DB_PASSWORD: joomla
    volumes:
      - ./html:/var/www/html
# 次の1行追加 ユーザーの"uid:gid"
    user: "1000:1000"

  joomladb:
    image: mariadb:10.5
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: joomla
    volumes:
      - ./mysql:/var/lib/mysql
# 次の1行追加 ユーザーの"uid:gid"
    user: "1000:1000"

再度 $ docker compose up -d と打ちます。

03Joomla! のインストール

http://localhost:8000 に Joomla のインストーラーが立ち上がります。Joomla は最新の安定版 5.0.3 になっています。

適当なサイト名を入力して次に進みます。

Joomla の管理者となるログインデータを入力します。

それぞれ compose.yaml に指定した値を入力して次に進みます。

データベースのホスト名:joomladb
データベースのユーザー名:root
ユーザーのパスワード:joomla
データベース名:joomla_db

インストール完了です。「追加の言語をインストール」をクリックして日本語化します。

japanese をチェックして次に進みます。最下行にボタンがあります。

管理画面、サイトともに Japanese を選択して「デフォルトの言語を設定」をクリックします。これで完了です。

「管理画面を開く」をクリックしますとログイン画面になります。設定した管理者ユーザーでログインします。

管理画面です。

サイトのトップページです。

管理画面に「ブログのサンプルデータ」がありますのでインストールをクリックしますとサンプルデータがインストールされます。

ということで簡単に Joomla の開発環境が整いました。次は WordPress のデータを Joomla に移す方法です。

多分なにか方法があると思います。

04WordPress のデータを移すプラグインがない?

WordPress から Joomla に移行するツールで無料のものはなさそうです。もう少し探してみますが、なければデータベースのデータをコツコツ変更して入れ替えるしかなさそうです。