Linux UbuntuのDockerで「Nextcloud+mysql」と「nextcloud+mariaDB」の2つをサーバーで運用する方法を紹介します。
本記事の読者層は以下の方を想定しています。
- Dockerで複数のイメージを同時に利用してサーバーを構築したい方
- Docker composeを利用したい方
UbuntuのDocker compose上で2つのサーバー構築する方法
過去の記事で仮想環境プラットフォーム「Docker compose」をLinux Ubuntuにインストール方法を紹介しました。今回は、Nextcloudとwordpressを同時にDockerでインストールする方法を紹介致します。
ポート設定で重要な点
(1) httpdのポート番号をNextcloudとwordPressで異なるポートにすること。
(2) mysqlとmariaDBでデーターベースサーバーも異なるポートでアクセスできるようにすることです。
Docker (Ubuntu 18.04 LTS以降)
バージョン 2.14.2
【サーバー1】: Nextcloud+mariaDB (アクセス先:https://servername:8080)
- Nextcloud
バージョン 25.0.1 (Nov. 3, 2022) - mariaDB
バージョン
【サーバー2】: WordPress+mySQL (アクセス先:https://servername:8085)
- WordPress
バージョン 6.1.1 - mySQL
バージョン 5.7
mySQLとnextcloudのイメージのダウンロード
以下のDockerの公式イメージからmysqlとnextcloudのイメージをダウンロードします。
Ubuntuのターミナル上から以下のdocker pullコマンドを実行して、Dockerのイメージをダウンロードできます。
docker pull mysql
docker pull nextcloud
docker pull mariaDB
docker pull wordpress
次に、
【サーバー1】「Nextcloud+mariaDB 」doker-composeの定義ファイルを作成します。
version: '3'
volumes:
mariadb:
ownapp:
services:
mariadb:
restart: always
image: mariadb
container_name: mariadb
ports:
- 5400:3306
expose:
- 5400
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- ./mariadb:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=rootpass
- MYSQL_PASSWORD=userpass
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_TCP_PORT=5400
ownapp:
restart: always
container_name: ownapp
image: nextcloud
volumes:
- ./ownapp:/var/www/html
ports:
- 8080:80
depends_on:
- mariadb
environment:
- MYSQL_PASSWORD=userpass
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=mariadb:5400
【サーバー2】「wordPress+mySQL 」doker-composeの定義ファイルを作成します。
version: '3'
volumes:
wd_app:
wd_db:
services:
wd_db:
restart: always
image: mysql
container_name: wd_db
ports:
- 12345:33060
expose:
- 12345
volumes:
- ./wd_db4:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=rootpass
- MYSQL_PASSWORD=userpass
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
wd_app:
restart: always
container_name: wd_app
image: wordpress
volumes:
- ./wp_app4:/var/www/html
ports:
- 8085:80
depends_on:
- wd_db
ymlの設定で重要な点
(1) volumeのIDは異なるものを使用すること。
今回はwd_app, wd_db, mariaDB, own_appのことなるボリュームを使用しました。
(2) hostへの保存先のディレクトリも異なるものを使用すること。
異なるサーバーを一つづつDocker Composeで立ち上げる。
【サーバー1】: 「Nextcloud+mariaDB 」の立ち上げ
最終的に、以下のコマンド「docker-compose up -d」を入力してバックグラウンドでスタートして終了です。
ここで、エラーがでないか「docker-compose up 」としてフォアグラウンド処理で確認してみるのも良いかと思います。
% docker-compose up -f docker-compose1.yml -d
[+] Running 3/3
⠿ Volume "user_app" Created 0.0s
⠿ Container wordpress-app Started 0.3s
⠿ Container mysql-container Started
【サーバー2】: 「WordPress+mariaDB 」の立ち上げ
同様に
% sudo docker compose up -f docker-compose2.yml -d
WARN[0000] Found orphan containers ([nextcloud-app db-container wd_app wd_db]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
[+] Running 2/2
? Container mariadb Started 1.0s
? Container ownapp Started
Docker composeのリストを確認すると以下のように見えます。
$ Docker compose ls -a
NAME STATUS CONFIG FILES
user exited(2), running(4) /home/user/docker-compose1.yml,/home/user/docker-compose2.yml
その後、適当なSafariなどのブラウザ上のURLへ「http://domainname:8085」を入力すると以下のようにWordPressが起動します。ここでは以下のように設定されているため、入力も同様に行います。
コンテナ内に入る方法
Docker-composeでのコンテナを確認すると2つのコンテナが確認できます。
% sudo docker compose ps
NAME COMMAND SERVICE STATUS PORTS
mysql-container "docker-entrypoint.s…" mysql running 0.0.0.0:3309->3306/tcp, :::3309->3306/tcp
nextcloud-app "/entrypoint.sh apac…" app running 0.0.0.0:8080->80/tcp, :::8080->80/tcp
何か問題が起こった場合には、データベースの設定に問題がある場合があります。
この場合、コンテナイメージに入って修正します。
Docker composeでnextcloud-appを起動するためには、「app」にて以下のようにコマンド入力します。
sudo docker compose exec app bash
/var/www/html/config 内の「confi.php」のデータベース内を確認します。
Docker composeの停止
Composeの停止は以下のコマンドでできます。このとき、networkと2つのコンテナが停止します。
sudo docker compose -f docker-compose1.yml down
[+] Running 2/2
? Container nextcloud-app Removed 0.0s
? Container db-container Removed 0.6s
sudo docker compose -f docker-compose2.yml down
[+] Running 3/3
? Container nextcloud-app Removed 1.4s
? Container mysql-container Removed 0.1s
? Network user_default Removed
まとめ
Linux UbuntuのDockerで「Nextcloud+mysql」を運用する方法インストール方法を紹介しました。
次回の記事をご期待下さい。どうぞよろしくお願いいたします。
コメント