Docker composeで2つ以上のサーバーを運用する方法

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

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の環境

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

まとめ

本記事のまとめ

    次回の記事をご期待下さい。どうぞよろしくお願いいたします。

    関連リンク

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

    コメント

    コメントする

    目次