ラベル Docker-on-RaspberryPi の投稿を表示しています。 すべての投稿を表示
ラベル Docker-on-RaspberryPi の投稿を表示しています。 すべての投稿を表示

2021年11月5日金曜日

Raspberry Pi OS(Raspbian Buster)にDockerとDocker Compose V2系をインストールする

Raspberry Pi OS(Raspbian Buster)にDockerとDocker Compose V2系をインストールするには、以下の手順を実行します。

インストール手順

1. Dockerのインストール
curl -fsSL https://get.docker.com -o get-docker.sh

sudo sh get-docker.sh

sudo adduser $USER docker

※いったんログアウトします。以下でバージョンを確認します。
docker -v

2.Docker Composeのインストール
Docker Composeをインストールしていない場合、以下のコマンドでDocker Compose V2系をインストールします。

cd /usr/libexec/docker/cli-plugins/

sudo wget https://github.com/docker/compose/releases/download/v2.1.0/docker-compose-linux-armv7

sudo chmod +x  docker-compose-linux-armv7

sudo mv docker-compose-linux-armv7 docker-compose

※以下のコマンドでDocker Composeのバージョンを確認します
docker compose version

3. libseccomp2のインストール
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 04EE7237B7D453EC 648ACFD622F3D138

echo "deb http://deb.debian.org/debian buster-backports main" | sudo tee -a /etc/apt/sources.list.d/buster-backports.list

sudo apt update

sudo apt install -t buster-backports libseccomp2
※インストール後、再起動しておきます

2020年7月13日月曜日

Raspbbery Pi(Raspbian Buster)にDockerとdocker-composeをインストールする

以下の手順でRaspbbery Pi(Raspbian Buster)にDockerとdocker-composeをインストールします。

インストール手順

1. Dockernのインストール
curl -fsSL get.docker.com -o get-docker.sh

sudo sh get-docker.sh

sudo usermod -aG docker pi

docker -v

※一度、ログオンしなおしてから
docker run armhf/hello-world

2. docker-composeのインストール
sudo pip3 install docker-compose

docker-compose -v

2019年12月2日月曜日

Raspberry PiからBluetooth経由でmicro:bitのボタン状態の通知を取得する

Raspberry PiからBluetooth経由でmicro:bitのボタン状態の通知を取得するには、以下の手順を実行します。

1. Raspberry Piにbluepyをインストール
bluepyをRaspberry Piにインストールするの手順で、bluepyをインストールします

2. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じで一通りのbluetoothサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
※6桁キーでペアリングしたい場合は「6桁のキーでmicrobitとRaspberry PiをBluetoothペアリングする」を参照してください。

3. microbitのボタン状態の通知を取得するプログラム
buttonnotify.py
import sys
import time
from bluepy import btle

class MyDelegate(btle.DefaultDelegate):
  def __init__(self, chA, chB):
    btle.DefaultDelegate.__init__(self)
    self.loop = True
    self.chA = chA
    self.chB = chB
    self.stateA = 0
    self.stateB = 0

  def handleNotification(self, hd, data):
    print("notification: {},{}".format(hd,ord(data)))
    if hd == 45:
      self.stateA = ord(data)
    if hd == 48:
      self.stateB = ord(data)
    if self.stateA == 2 and self.stateB == 2:
      print("exit...")
      self.loop = False

per = btle.Peripheral("XX:XX:XX:XX:XX:XX", btle.ADDR_TYPE_RANDOM)

# Button Service
svcButton = per.getServiceByUUID("e95d9882-251d-470a-a062-fa1922dfa9a8")
# Button A State
chA = svcButton.getCharacteristics("e95dda90-251d-470a-a062-fa1922dfa9a8")[0]
ch_cccd=chA.getDescriptors(forUUID=0x2902)[0]
ch_cccd.write(b"\x01\x00", False)

# Button B State
chB = svcButton.getCharacteristics("e95dda91-251d-470a-a062-fa1922dfa9a8")[0]
ch_cccd=chB.getDescriptors(forUUID=0x2902)[0]
ch_cccd.write(b"\x01\x00", False)

dg = MyDelegate(chA, chB)
per.setDelegate( dg )

while dg.loop:
  if per.waitForNotifications(0.1):
    continue

4. microbitのボタン状態の通知を取得するプログラムの実行
$ python3 buttonnotify.py
notification: 48,1
notification: 48,2
0はボタンを押していない状態、1で押した状態、2で長押し状態を示します。AボタンとBボタンを長押し状態にするか、Ctrl+Cでプログラムを終了します。

〇参考情報
Bluetooth Developer Studio Level 3 Profile Report


2019年8月11日日曜日

Raspbian BusterにDockerとdocker-composeをインストールする

Raspbian BusterにDockerとdocker-composeをインストールするには、以下のコマンドを実行します。

sudo apt-get update

curl -fsSL get.docker.com -o get-docker.sh

sudo sh get-docker.sh

sudo usermod -aG docker pi

docker run armhf/hello-world

sudo apt-get -y install libffi-dev libssl-dev

sudo apt-get install python-pip

sudo apt-get remove python-configparser

sudo pip install docker-compose

docker-compose -v

2019年4月24日水曜日

Raspberry Pi上のDockerでAdminer4.7とMariaDB10.3のコンテナーを構築する

Adminerでブラウザからデータベースを操作する事ができます。

○Adminerの画面

http://<Dockerホスト>:8080
ホスト:db、ユーザ:root、パスワード:adminer、データベース:mysqlを指定します。

○構築方法
1. Adminer用のMariaDBイメージの作成(Dockerfileとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile -t mariadb-adminer .

Dockerfile
FROM alpine:3.9
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]

setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql/data
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8
pid-file=/run/mysqld/mysqld.pid
EOF
  cd /var/lib/mysql
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql/data \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('adminer') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'adminer';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE adminer DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -padminer < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

2. AdminerとMariaDBコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  adminer:
    image: adminer:4.7
    container_name: "adminer"
    ports:
      - "8080:8080"
    depends_on:
      - db
  db:
    image: mariadb-adminer
    container_name: "db"
    volumes:
      - "db-data:/var/lib/mysql"
    ports:
      - "3306:3306"
volumes:
  db-data:
    driver: local

〇参考情報
Raspberry PiにDockerとdocker-composeをインストールするには以下の記事を参照してください。
Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。
・Adminerに関する他の情報はこちらを参照してください。

・Adminerのプロジェクトwebサイト
https://www.adminer.org/

2018年12月10日月曜日

Raspberry Pi上のDockerでNextcloud14.03、MariaDB10がインストールされたコンテナ(Alpine 3.8)を構築する

NextcloudはDropboxのようなファイルを共有できるサーバーアプリケーションです。

○Nextcloudの画面


○構築方法
以下の手順で、NextcloudとMariaDBのコンテナを構築・実行します。

1. Nextcloudイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t mynextcloud .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7-mysqli php7-pdo php7-pdo_mysql php7-intl php7-mcrypt php7-mbstring php7-session php7-curl php7-json php7-xml php7-zip php7-tokenizer php7-ctype php7-gd php7-xmlwriter php7-xmlreader php7-dom php7-iconv php7-simplexml php7-openssl openssl openrc unzip \
  && rm -rf /var/cache/apk/* \
  && wget https://download.nextcloud.com/server/releases/nextcloud-14.0.3.zip \
  && unzip nextcloud-14.0.3.zip \
  && rm -f nextcloud-14.0.3.zip \
  && mkdir -p /opt \
  && mv nextcloud /opt/nextcloud \
  && mkdir -p /opt/nextcloud/data \
  && chown -R apache:apache /opt/nextcloud \
  && ln -s  /opt/nextcloud /var/www/localhost/htdocs \
  && mkdir -p /run/apache2
EXPOSE 80
VOLUME /opt/nextcloud
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. Nextcloud用のMariaDBイメージの作成(Dockerfile-mariadbとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-nextcloud .

Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]

setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8mb4
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('nextcloud') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'nextcloud' with grant option;
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE nextcloud DEFAULT CHARACTER SET utf8mb4;

EOF
  /usr/bin/mysql -uroot -pnextcloud < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

3. NextcloudとMariaDBコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  nextcloud:
    image: mynextcloud
    container_name: "nextcloud"
    volumes:
      - "nextcloud-data:/opt/nextcloud"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb-nextcloud
    container_name: db
    ports:
      - "3306:3306"
    volumes:
      - db-data:/var/lib/mysql
volumes:
  db-data:
    driver: local
  nextcloud-data:
    driver: local

4. ブラウザからhttp://<Dockerホスト名またはIP>/nextcloud/にアクセス
インストーラー画面で以下の項目を入力します
データベースのユーザ名: root
データベースのパスワード: nextcloud
データベース名: nextcloud
データベースのホスト名: db:3306
他の項目は好みに合わせて入力


○関連情報
・Nextcloudに関する他の記事はこちらを参照してください。

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。

2018年12月8日土曜日

Raspberry Pi上のDockerでProcessWire、MariaDBがインストールされたコンテナ(Alpine 3.8)を構築する

ProcessWireはPHP製のCMSです。

○ProcessWireの画面


○構築方法
以下の手順で、ProcessWire、MariaDBのコンテナを構築・実行します。

1. ProcessWireイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t processwire .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7-mysqli php7-mbstring php7-session php7-xml php7-dom php7-ctype php7-tokenizer php7-gd php7-simplexml php7-iconv php7-zip php7-json php7-pdo php7-pdo_mysql openssl openrc unzip \
  && rm -rf /var/cache/apk/* \
  && wget https://github.com/processwire/processwire/archive/master.zip \
  && unzip master.zip \
  && rm -f master.zip \
  && mkdir /opt \
  && mv processwire-master /opt/processwire \
  && chown -R apache:apache /opt/processwire \
  && mkdir -p /run/apache2 \
  && echo $'\n\
  Options Indexes FollowSymLinks \n\
  AllowOverride All\n\
  Options All\n\
  Require all granted\n\
' >> /etc/apache2/httpd.conf \
  && ln -s /opt/processwire /var/www/localhost/htdocs/ \
  && sed -i -e 's|#LoadModule rewrite_module modules/mod_rewrite.so|LoadModule rewrite_module modules/mod_rewrite.so|' /etc/apache2/httpd.conf
EXPOSE 80
VOLUME /opt/processwire
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. Processwire用のMariaDBイメージの作成(Dockerfile-mariadbとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-processwire .

Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]

setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8mb4
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('processwire') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'processwire';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE processwire DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -pprocesswire < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

3. ProcessWireとMariaDBコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  processwire:
    image: processwire
    container_name: "processwire"
    volumes:
      - "processwire-data:/opt/processwire"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb-processwire
    container_name: "processwire-db"
    volumes:
      - "db-data:/var/lib/mysql"
volumes:
  db-data:
    driver: local
  processwire-data:
    driver: local

4. ブラウザからhttp://<Dockerホスト名またはIP>/processwire/にアクセス
「Get Started」ボタンをクリック


5. Site Installation Profileで「Default (Beginner Edition)」を選択して「Continue」をクリック。


6. Compatibilityで「Continue to Next Step」をクリック。


7. MySQL Databaseで以下の項目を入力し、「Continue」をクリック。
DB Name : processwire
DB User : root
DB Password : processwire
DB Host : db
DB Engine : InnoDB
DB Charset : utf8mb4
他は好みにあわせて設定する


8.Admin Account Informationで管理者ユーザの情報を入力して、「Continue」をクリック


9.初期設定完了画面
インストールは完了しました。ブラウザからhttp://<Dockerホスト名またはIP>/にアクセスします。

〇参考情報
・Raspberry PiにDockerとdocker-composeをインストールするには以下の記事を参照してください。
Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする

・ProcessWireに関する他の記事はこちらを参照してください。

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。

2018年12月6日木曜日

Raspberry Pi上のDockerでPagekit、MariaDBがインストールされたコンテナ(Alpine 3.8)を構築する

PagekitはPHP製のCMSです。

○Pagekitの画面


○構築方法
以下の手順で、PagekitとMariaDBのコンテナを構築・実行します。
1. Pagekitイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t mypagekit .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7 php7-mysqli php7-pdo php7-pdo_mysql php7-mbstring php7-session php7-curl php7-json php7-xml php7-zip php7-ctype php7-dom php7-simplexml php7-iconv php7-tokenizer php7-intl php7-posix php7-openssl openssl openrc \
  && rm -rf /var/cache/apk/* \
  && mkdir -p /opt/pagekit
WORKDIR /opt/pagekit
RUN wget https://github.com/pagekit/pagekit/releases/download/1.0.14/pagekit-1.0.14.zip \
  && unzip pagekit-* \
  && rm -f pagekit-*.zip \
  && chown -R apache:apache /opt/pagekit \
  && ln -s  /opt/pagekit /var/www/localhost/htdocs \
  && mkdir -p /run/apache2
EXPOSE 80
VOLUME /opt/pagekit
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. Pagekit用のMariaDBイメージの作成(Dockerfile-mariadbとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-pagekit .

Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]

setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('pagekit') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'pagekit';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE pagekit DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -ppagekit < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

2. PagekitとMariaDBコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  pagekit:
    image: mypagekit
    container_name: "pagekit"
    volumes:
      - "pagekit-data:/opt/pagekit"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb-pagekit
    container_name: "pagekit-db"
    volumes:
      - "db-data:/var/lib/mysql"
    ports:
      - "3306:3306"
volumes:
  db-data:
    driver: local
  pagekit-data:
    driver: local

3. ブラウザからhttp://<Dockerホスト名またはIP>/pagekit/にアクセスして、言語を選択します。


4. Connect Database画面
以下の値を設定します。
Driver : MySQL
Hostname : db
User : root
Password : pagekit
Database name: pagekit


5. サイト名、管理者情報を入力します。


〇参考情報
Raspberry PiにDockerとdocker-composeをインストールするには以下の記事を参照してください。
Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。

2018年12月4日火曜日

Raspberry Pi上のDockerでPiwigo、MariaDBがインストールされたコンテナのイメージ(Alpine3.8)を作成する

Piwigoで写真や画像を管理することができます。

○Piwigoの画面


○構築方法
以下の手順で、Piwigo、MariaDBのコンテナを構築・実行します。

1. Piwigoイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t piwigo .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7 php7-mysqli php7-mbstring php7-session php7-curl php7-json php7-xml php7-zip php7-ctype php7-dom php7-simplexml php7-iconv php7-tokenizer php7-exif php7-gd openssl openrc \
  && rm -rf /var/cache/apk/* \
  && wget -O piwigo.zip http://piwigo.org/download/dlcounter.php?code=latest \
  && unzip piwigo.zip \
  && rm -f piwigo.zip \
  && mkdir /opt \
  && mv piwigo /opt/piwigo \
  && chown -R apache:apache /opt/piwigo \
  && ln -s  /opt/piwigo /var/www/localhost/htdocs \
  && mkdir -p /run/apache2 \
  && sed -i -e 's/max_execution_time = 30/max_execution_time = 200/' /etc/php7/php.ini \
  && sed -i -e 's/post_max_size = 8M/post_max_size = 100M/' /etc/php7/php.ini \
  && sed -i -e 's/upload_max_filesize = 2M/upload_max_filesize = 20M/' /etc/php7/php.ini \
  && sed -i -e 's/memory_limit = 128M/memory_limit = 256M/' /etc/php7/php.ini
EXPOSE 80
VOLUME /opt/piwigo
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. Piwigo用のMariaDBイメージの作成(Dockerfile-mariadbとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-piwigo .

Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]
setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('piwigo') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'piwigo';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE piwigo DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -ppiwigo < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

3. PiwigoとMariaDBコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  piwigo:
    image: piwigo
    container_name: "piwigo"
    volumes:
      - "piwigo-data:/opt/piwigo"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb-piwigo
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    container_name: "piwigo-db"
    volumes:
      - "db-data:/var/lib/mysql"
    ports:
      - "3306:3306"
volumes:
  db-data:
    driver: local
  piwigo-data:
    driver: local

3. ブラウザからhttp:///piwigo/にアクセスして、以下の項目を入力します。
ホスト:db
ユーザー:root
パスワード:piwigo
データベース名:piwigo
管理者ユーザの設定は任意入力します


〇参考情報
Raspberry PiにDockerとdocker-composeをインストールするには以下の記事を参照してください。
Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする


○関連情報
・Piwigoに関する他の記事はこちらを参照してください。

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。

2018年12月3日月曜日

Raspberry Pi上のDockerでMyBB1.8.19、MariaDBがインストールされたコンテナ(Alpine 3.8)を構築する

MyBBはPHP製のフォーラムを提供するサーバーアプリケーションです。

○MyBBの画面


○構築方法
以下の手順で、MyBBとMariaDBのコンテナを構築・実行します。

1. MyBBイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t mybb .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7-mysqli php7-intl php7-mcrypt php7-mbstring php7-session php7-curl php7-json php7-xml php7-zip openssl openrc unzip \
  && rm -rf /var/cache/apk/* \
  && wget https://resources.mybb.com/downloads/mybb_1819.zip \
  && unzip mybb_1819.zip \
  && rm -f mybb_1819.zip \
  && mkdir /opt \
  && mv Upload /opt/mybb \
  && chown -R apache:apache /opt/mybb \
  && ln -s  /opt/mybb /var/www/localhost/htdocs \
  && mkdir -p /run/apache2
EXPOSE 80
VOLUME /opt/mybb
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. MyBB用のMariaDBイメージの作成(Dockerfile-mariadbとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-mybb .

Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]

setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('mybb') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mybb';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE mybb DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -pmybb < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

3. MyBBとMariaDBコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  mybb:
    image: mybb
    container_name: "mybb"
    volumes:
      - "mybb-data:/opt/mybb"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb-mybb
    container_name: "mybb-db"
    volumes:
      - "db-data:/var/lib/mysql"
volumes:
  db-data:
    driver: local
  mybb-data:
    driver: local

4. ブラウザからhttp://<Dockerホスト名またはIP>/mybb/にアクセス
Welcome画面で「Next」をクリックする


5.License Agreement画面でLicenseを確認し、同意できれば「Next」をクリックする


6. Requirement Check画面で「Next」をクリックする


7.Database Configuration画面で以下の項目を入力し、「Next」をクリックする
Database Server Hostname: db
Database Username: root
Database Password: mybb
Database Name: mybb


8. Table Creation画面で「Next」をクリックする


9. Table Population画面で「Next」をクリックする


10. Theme Insertion画面で「Next」をクリックする


11. Board Configuration画面で掲示板の情報を入力し、「Next」をクリックする


12. Create Administrator Account画面で管理者の情報を入力し、「Next」をクリックする


13. Finish Setup画面


〇参考情報
Raspberry PiにDockerとdocker-composeをインストールするには以下の記事を参照してください。
Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。

2018年12月1日土曜日

Raspberry Pi上のDockerでLychee、MariaDBがインストールされたコンテナ(Alpine 3.8)を構築する

LycheeはPHP製の画像管理ソフトです。

○Lycheeの画面


○構築方法
以下の手順で、LycheeとMariaDBのコンテナを構築・実行します。

1. Lycheeイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t lychee .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7-mysqli php7-pdo php7-session php7-mbstring php7-mcrypt php7-curl php7-json php7-xml php7-simplexml php7-zip php7-gd php7-zlib php7-exif openssl openrc unzip \
  && rm -rf /var/cache/apk/* \
  && wget  https://github.com/electerious/Lychee/archive/master.zip \
  && mkdir -p /opt \
  && unzip master.zip \
  && rm -f master.zip -f \
  && mv Lychee-master /opt/lychee \
  && chown -R apache:apache /opt/lychee \
  && mkdir -p /run/apache2 \
  && ln -s /opt/lychee /var/www/localhost/htdocs \
  && sed -i -e 's/max_execution_time = 30/max_execution_time = 200/' /etc/php7/php.ini \
  && sed -i -e 's/post_max_size = 8M/post_max_size = 100M/' /etc/php7/php.ini \
  && sed -i -e 's/upload_max_filesize = 2M/upload_max_filesize = 20M/' /etc/php7/php.ini \
  && sed -i -e 's/memory_limit = 128M/memory_limit = 256M/' /etc/php7/php.ini
EXPOSE 80
VOLUME /opt/lychee
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. Lychee用のMariaDBイメージの作成(Dockerfile-mariadbとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-lychee .

Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]

setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('lychee') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'lychee';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE lychee DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -plychee < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

2. LycheeとMariaDBコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  lychee:
    image: lychee
    container_name: "lychee"
    volumes:
      - "lychee-data:/opt/lychee"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb-lychee
    container_name: "lychee-db"
    volumes:
      - "db-data:/var/lib/mysql"
volumes:
  db-data:
    driver: local
  lychee-data:
    driver: local

3. ブラウザからhttp://<Dockerホスト名またはIP>/lychee/にアクセス
以下の項目を入力し、「Connect」ボタンをクリックする
Database Host:db
Database Username: root
Database Password:lychee
Datanase Name:lychee


4. 登録するユーザ情報を入力する

〇動作環境
動作環境:arm32(Raspberry Pi 3 Model B+)
Raspberry Piでdocker-composeを使用するには、「Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする」を参照してください。

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。

2018年11月27日火曜日

Raspberry Pi上のDockerでMantis Bug Tracker2.18.0、MariaDBがインストールされたコンテナ(Alpine 3.8)を構築する

Mantis Bug Trackerは、PHP製のバグ追跡・課題管理サーバです。

○Mantis Bug Trackerの画面

デフォルトユーザ/パスワードはadministrator/rootです。

○構築方法
以下の手順で、Mantis Bug TrackerとMariaDBのコンテナを構築・実行します。

1. Mantis Bug Trackerイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t mantisbt .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7-mysqli php7-pdo php7-pdo_mysql php7-intl php7-mcrypt php7-mbstring php7-session php7-curl php7-json php7-xml php7-zip php7-tokenizer php7-ctype php7-gd php7-xmlwriter php7-xmlreader php7-dom php7-zlib php7-iconv php7-simplexml php7-fileinfo openssl openrc unzip \
  && rm -rf /var/cache/apk/* \
  && wget https://sourceforge.net/projects/mantisbt/files/mantis-stable/2.18.0/mantisbt-2.18.0.tar.gz \
  && tar xvfz mantisbt-2.18.0.tar.gz \
  && rm -f mantisbt-2.18.0.tar.gz \
  && mkdir -p /opt \
  && mv mantisbt-2.18.0 /opt/mantisbt \
  && chown -R apache:apache /opt/mantisbt \
  && ln -s  /opt/mantisbt /var/www/localhost/htdocs \
  && mkdir -p /run/apache2 \
  && mkdir -p /var/mantisbt \
  && chown -R apache:apache /var/mantisbt
EXPOSE 80
VOLUME ["/var/mantisbt","/opt/mantisbt"]
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. Mantis Bug Tracker用のMariaDBイメージの作成(Dockerfile-mariadbとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-mantisbt .

Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]

setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('mantisbt') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mantisbt';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE mantisbt DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -pmantisbt < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

3. Mantis Bug TrackerとMariaDBコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  mantisbt:
    image: mantisbt
    container_name: "mantisbt"
    volumes:
      - "mantisbt-data:/var/mantisbt"
      - "mantisbt-opt:/opt/mantisbt"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb-mantisbt
    container_name: "mantisbt-db"
    volumes:
      - "db-data:/var/lib/mysql"
volumes:
  db-data:
    driver: local
  mantisbt-data:
    driver: local
  mantisbt-opt:
    driver: local

4. ブラウザからhttp://<Dockerホスト名またはIP>/mantisbt/にアクセス
Installer Optionsで以下の項目を入力する
Type of Database: MySQL Improved
Hostname (for Database Server): db
Username (for Database): root
Password (for Database): mantisbt
Database name (for Database): mantisbt


〇動作環境
動作環境:arm32(Raspberry Pi 3 Model B+)
Raspberry Piでdocker-composeを使用するには、「Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする」を参照してください。


○関連情報
・Mantis Bug Trackerに関する他の記事はこちらを参照してください。

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。

2018年11月24日土曜日

Raspberry Pi上のDockerでVanilla Forums 2.6.3とMariaDBがインストールされたコンテナ(Alpine 3.8)を構築する

Vanilla ForumsはPHP製の掲示板アプリケーションです。

○Vanilla Forumsの画面


○構築方法
以下の手順で、Vanilla Forums2.6.3とMariaDBのコンテナを構築・実行します。

1. Vanilla Forumsイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t vanillaforums .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7-pdo php7-mysqli php7-pdo_mysql php7-intl php7-mcrypt php7-mbstring php7-session php7-curl php7-json php7-xml php7-zip php7-tokenizer php7-ctype openssl openrc unzip \
  && rm -rf /var/cache/apk/* \
  && mkdir -p /opt/vanillaforums \
  && wget https://open.vanillaforums.com/get/vanilla-core-2.6.3.zip -P /opt/vanillaforums \
  && unzip /opt/vanillaforums/vanilla-core-2.6.3.zip \
  && rm -f /opt/vanillaforums/vanilla-core-2.6.3.zip \
  && chown -R apache:apache /opt/vanillaforums \
  && ln -s  /opt/vanillaforums /var/www/localhost/htdocs \
  && mkdir -p /run/apache2 \
EXPOSE 80
VOLUME /opt/vanillaforums
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. Vanilla Forums用のMariaDBイメージの作成(Dockerfile-mariadbとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-vanillaforums .

Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]

setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8mb4
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('vanillaforums') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'vanillaforums';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE vanillaforums DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -pvanillaforums < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

3. Vanilla ForumsとMariaDBLコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  vanillaforums:
    image: vanillaforums
    container_name: "vanillaforums"
    volumes:
      - "vanillaforums-data:/opt/vanillaforums"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb-vanillaforums
    container_name: "vanillaforums-db"
    volumes:
      - "db-data:/var/lib/mysql"
volumes:
  db-data:
    driver: local
  vanillaforums-data:
    driver: local

3. ブラウザからhttp://<Dockerホスト名またはIP>/vanillaforums/にアクセス
Installer画面で以下の項目を入力し、「Continue」をクリックする
Database Host: db
Database Name: vanillaforums
Database User: root
Database Password: vanillaforums
他の項目は好みに合わせて入力


〇動作環境
動作環境:arm32(Raspberry Pi 3 Model B+)
Raspberry Piでdocker-composeを使用するには、「Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする」を参照してください。

○関連情報
・Vanilla Forumsに関する他の情報はこちらを参照してください。

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。

2018年11月22日木曜日

Raspberry Pi上のDockerでselfoss2.1.8、MariaDBがインストールされたコンテナのイメージを作成する

selfossはPHP製のフィードリーダーです。

〇selfossの画面

※サンプルのRSS
http://serverarekore.blogspot.com/feeds/posts/default

○構築方法
以下の手順で、selfoss、MariaDBのコンテナを構築・実行します。

1. selfossイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t myselfoss .

Dockerfile
FROM alpine:3.8
ENV TZ=Asia/Tokyo
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7 php7-mysqli php7-pdo php7-pdo_mysql php7-mbstring php7-session php7-curl php7-json php7-xml php7-zip php7-ctype php7-dom php7-simplexml php7-iconv php7-zlib php7-gd openssl openrc \
  && rm -rf /var/cache/apk/* \
  && mkdir -p /opt/selfoss
WORKDIR /opt/selfoss
RUN wget https://github.com/SSilence/selfoss/releases/download/2.18/selfoss-2.18.zip \
  && unzip selfoss-2.18.zip \
  && rm -f selfoss-2.18.zip \
  && cp defaults.ini config.ini \
  && sed -i -e 's/db_type=sqlite/db_type=mysql/' config.ini \
  && sed -i -e 's/db_host=localhost/db_host=db/' config.ini \
  && sed -i -e 's/db_password=/db_password=selfoss/' config.ini \
  && sed -i -e 's/db_port=/db_port=3306/' config.ini \
  && chown -R apache:apache /opt/selfoss \
  && mkdir -p /run/apache2 \
  && echo $'\n\
Options Indexes FollowSymLinks \n\
AllowOverride All\n\
Require all granted\n\
' >> /etc/apache2/httpd.conf \
  && ln -s /opt/selfoss /var/www/localhost/htdocs \
  && sed -i -e 's|#LoadModule rewrite_module modules/mod_rewrite.so|LoadModule rewrite_module modules/mod_rewrite.so|' /etc/apache2/httpd.conf \
  && echo '0,10,20,30,40,50 * * * * /usr/bin/php /opt/selfoss/cliupdate.php' >> /var/spool/cron/crontabs/root
EXPOSE 80
VOLUME /opt/selfoss
CMD ["sh", "-c", "crond -d 8 && /usr/sbin/httpd -D FOREGROUND"]

2. selfoss用のMariaDBイメージの作成(Dockerfile-mariadbとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-selfoss .

Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]

setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8mb4
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('selfoss') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'selfoss';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE selfoss DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -pselfoss < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

3. selfossとMySQLコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  selfoss:
    image: myselfoss
    container_name: "selfoss"
    volumes:
      - "selfoss-data:/opt/selfoss"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb-selfoss
    container_name: "selfoss-db"
    volumes:
      - "db-data:/var/lib/mysql"
    ports:
      - "3306:3306"
volumes:
  db-data:
    driver: local
  selfoss-data:
    driver: local

4. ブラウザからhttp://<Dockerホスト名またはIP>/selfoss/にアクセス

〇動作環境
動作環境:arm32(Raspberry Pi 3 Model B+)
Raspberry Piでdocker-composeを使用するには、「Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする」を参照してください。


○関連情報
・selfossに関する他の記事はこちらを参照してください。

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。

2018年11月19日月曜日

Raspberry Pi上のDockerでTextpattern4.7.1とMariaDBがインストールされたコンテナ(Alpine 3.8)を構築する

TextpatternはPHP製のCMSです。
以下の手順で、TextpatternとMariaDBのコンテナを構築・実行します。

○Textpatternの画面


○構築方法
1. Textpatternイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t textpattern .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --nocache apache2 php7-apache2 php7-mysqli php7-pdo php7-mbstring php7-session php7-curl php7-json php7-xml php7-simplexml php7-zip openssl openrc \
  && rm -rf /var/cache/apk/* \
  && wget https://textpattern.com/File+download/86/textpattern-4.7.1.tar.gz \
  && tar xvfz textpattern-4.7.1.tar.gz \
  && rm -f textpattern-4.7.1.tar.gz \
  && mkdir /opt \
  && mv textpattern-4.7.1 /opt/textpattern \
  && chown -R apache:apache /opt/textpattern \
  && mkdir -p /run/apache2 \
  && echo $'\n\
Options Indexes FollowSymLinks \n\
AllowOverride All\n\
Require all granted\n\
' >> /etc/apache2/httpd.conf \
  && ln -s /opt/textpattern /var/www/localhost/htdocs \
  && sed -i -e 's|#LoadModule rewrite_module modules/mod_rewrite.so|LoadModule rewrite_module modules/mod_rewrite.so|' /etc/apache2/httpd.conf
EXPOSE 80
VOLUME /opt/textpattern
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. Textpattern用のMariaDBイメージの作成(Dockerfile-mariadbとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-textpattern .

Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]
setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('textpattern') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'textpattern';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE textpattern DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -ptextpattern < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

3. TextpatternとMariaDBコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  textpattern:
    image: textpattern
    container_name: "textpattern"
    volumes:
      - "textpattern-data:/opt/textpattern"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb-textpattern
    container_name: "textpattern-db"
    volumes:
      - "db-data:/var/lib/mysql"
volumes:
  db-data:
    driver: local
  textpattern-data:
    driver: local

4. ブラウザからhttp://<Dockerホスト名またはIP>/textpattern/textpattern/setup/index.phpにアクセス
インストール言語として日本語を選択して、submitボタンをクリックする


5. 以下の項目を入力し、「次へ」ボタンをクリックする
MySQLログイン: root
MySQLパスワード:textpattern
MySQLサーバ:db
MySQLデータベース:textpattern
テーブルプリフィックス:(空のまま)


6. 画面に表示されたconfig.phpの内容をコピーして、config.phpとして保存して、以下のコマンドを実行する
docker cp config.php textpattern:/opt/textpattern/textpattern
実行後、「行いました!」ボタンをクリックする


7. 管理者ユーザの情報を入力、管理ページのテーマを選択して「次へ」ボタンをクリックする


8. 完了画面から「今すぐログイン」ボタンをクリックする


〇動作環境
・arm32(Raspberry Pi 3 Model B+)

○関連情報
・Textpatternに関する他の記事はこちらを参照してください。

・Raspberry Piでdocker-composeを使用するには、「Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする」を参照してください。

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。

2018年11月13日火曜日

Raspberry Pi上のDockerでKanboard1.2.6、MariaDBがインストールされたコンテナ(Alpine 3.8)を構築する

Kanboardはタスク管理をおこなうPHP製のソフトウェアです。
以下の手順で、KanboardとMariaDBのコンテナを構築・実行します。

○Kanboardの画面


構築方法

1. Kanboardイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t kanboard .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7-apache2 php7-mysqli php7-pdo php7-pdo_mysql php7-mbstring php7-session php7-gd php7-json php7-xml php7-ctype php7-simplexml php7-dom openssl openrc unzip \
  && rm -rf /var/cache/apk/* \
  && wget https://github.com/kanboard/kanboard/archive/v1.2.6.zip \
  && unzip v1.2.6.zip \
  && rm -f v1.2.6.zip \
  && mkdir /opt \
  && mv /kanboard-1.2.6 /opt/kanboard \
  && mkdir -p /run/apache2 \
  && cp /opt/kanboard/config.default.php /opt/kanboard/config.php \
  && sed -i -e "s#define('DB_DRIVER', 'sqlite');#define('DB_DRIVER', 'mysql');#" /opt/kanboard/config.php \
  && sed -i -e "s#define('DB_HOSTNAME', 'localhost');#define('DB_HOSTNAME', 'db');#" /opt/kanboard/config.php \
  && sed -i -e "s#define('DB_USERNAME', 'root');#define('DB_USERNAME', 'root');#" /opt/kanboard/config.php \
  && sed -i -e "s#define('DB_PASSWORD', '');#define('DB_PASSWORD', 'kanboard');#" /opt/kanboard/config.php \
  && ln -s /opt/kanboard /var/www/localhost/htdocs \
  && chown -R apache:apache /opt/kanboard
EXPOSE 80
VOLUME /opt/kanboard
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

2. Kanboard用のMariaDBイメージの作成(Dockerfileとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-kanboard .

Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]
setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('kanboard') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'kanboard';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE kanboard DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -pkanboard < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

3. KanboardとMariaDBコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  kanboard:
    image: kanboard
    container_name: "kanboard"
    volumes:
      - "kanboard-data:/opt/kanboard"
    ports:
      - "80:80"
    depends_on:
      - db
  db:
    image: mariadb-kanboard
    container_name: "kanboard-db"
    volumes:
      - "db-data:/var/lib/mysql"
volumes:
  db-data:
    driver: local
  kanboard-data:
    driver: local

4. ブラウザからhttp://<Dockerホスト名またはIP>/kanboard/にアクセス
デフォルトユーザのユーザ名はadmin、パスワードもadminです。

動作環境

動作環境:arm32(Raspberry Pi 3 Model B+)
Raspberry Piでdocker-composeを使用するには、「Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする」を参照してください。


関連情報

・Kanboardの設定・操作方法については「Kanboardの設定・操作」を参照してください。

・Kanboardに関する他の記事はこちらを参照してください。

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。

・Kanboardのgithubリポジトリ
https://github.com/kanboard/kanboard

2018年11月6日火曜日

Raspberry Pi上のDockerでBookStack、MariaDBがインストールされたコンテナ(Alpine 3.8)を構築する

BookStackはブックやページで管理できるPHP製のWikiです。

○BookStackの画面

ブラウザからhttp://<dokcerホスト>にアクセスします(初回実行の場合は、初期化を行うために時間を置いてからアクセスします)。デフォルトユーザ/パスワードはadmin@admin.com/passwordです。

○構築方法
以下の手順で、BookStack、MariaDBのコンテナを構築・実行します。

1. BookStack用のMariaDBイメージの作成(Dockerfile-mariadbとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile-mariadb -t mariadb-bookstack .
Dockerfile-mariadb
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]
setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8mb4
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('bookstack') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'bookstack';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE bookstack DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -pbookstack < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

2. BookStackイメージの作成(Dockerfileがあるフォルダで実行)
docker build -t bookstack .

Dockerfile
FROM alpine:3.8
WORKDIR /
RUN  apk update \
  && apk add --no-cache apache2 php7 php7-phar php7-simplexml php7-fileinfo php7-xmlwriter php7-tokenizer php7-ctype php7-apache2 php7-mysqli php7-mbstring php7-session php7-xml php7-dom php7-gd php7-zip php7-zip php7-json php7-pdo php7-pdo_mysql php7-tidy openssl openrc unzip git curl mysql-client \
  && rm -rf /var/cache/apk/* \
  && curl -s https://getcomposer.org/installer | php \
  && mv composer.phar /usr/local/bin/composer
WORKDIR /opt
RUN git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch
WORKDIR /opt/BookStack
RUN /usr/local/bin/composer install \
  && mkdir -p /run/apache2 \
  && cp .env.example .env \
  && sed -i -e 's/DB_HOST=localhost/DB_HOST=db/' /opt/BookStack/.env \
  && sed -i -e 's/DB_DATABASE=database_database/DB_DATABASE=bookstack/' /opt/BookStack/.env \
  && sed -i -e 's/DB_USERNAME=database_username/DB_USERNAME=root/' /opt/BookStack/.env \
  && sed -i -e 's/DB_PASSWORD=database_user_password/DB_PASSWORD=bookstack/' /opt/BookStack/.env \
  && chown -R apache:apache /opt/BookStack \
  && sed -i -e 's#DocumentRoot "/var/www/localhost/htdocs"#DocumentRoot "/opt/BookStack/public"#' /etc/apache2/httpd.conf \
  && echo $'\n\
  AllowOverride All\n\
  Require all granted\n\
' >> /etc/apache2/httpd.conf \
  && sed -i -e 's|#LoadModule rewrite_module modules/mod_rewrite.so|LoadModule rewrite_module modules/mod_rewrite.so|' /etc/apache2/httpd.conf \
  && echo $'#!/bin/sh \n\
if [ -f /opt/BookStack/cinit ]; then \n\
  echo "ok." \n\
else \n\
  php artisan key:generate --force  \n\
  until mysqladmin ping -h db -P 3306 --silent; do echo -n "." && sleep 1; done \n\
  php artisan migrate --force  \n\
  touch /opt/BookStack/cinit \n\
fi \n\
/usr/sbin/httpd -D FOREGROUND' >> /opt/BookStack/init.sh \
  && chmod +x /opt/BookStack/init.sh
EXPOSE 80
VOLUME /opt/BookStack
CMD ["/opt/BookStack/init.sh"]

3. BookStackとMariaDBコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  db:
    image: mariadb-bookstack
    container_name: "bookstack-db"
    ports:
      - "3306:3306"
    volumes:
      - db-data:/var/lib/mysql
  bookstack:
    image: bookstack
    container_name: "bookstack"
    volumes:
      - "bookstack-data:/opt/BookStack"
    ports:
      - "80:80"
    depends_on:
      - db
volumes:
  db-data:
    driver: local
  bookstack-data:
    driver: local


○関連情報
・BookStackに関する他の記事はこちらを参照してください。

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。

2018年11月1日木曜日

Raspberry Pi上のDockerでAdminerとMariaDBのコンテナーを構築する

Adminerでブラウザからデータベースを操作する事ができます。

○Adminerの画面

ブラウザからhttp://<Dockerホスト>:8080にアクセスして、ホスト:db、ユーザ:root、パスワード:adminer、データベース:mysqlを指定します。

○構築方法
1. Adminer用のMariaDBイメージの作成(Dockerfileとsetupdb.shのあるディレクトリで実行)
docker build -f Dockerfile -t mariadb-adminer .

Dockerfile
FROM alpine:3.8
COPY ./setupdb.sh /
RUN apk --no-cache add mariadb mariadb-client \
  && addgroup mysql mysql \
  && chmod +x /setupdb.sh
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["/setupdb.sh"]

setupdb.sh
#!/bin/sh
if [ ! -d "/run/mysqld" ]; then
  mkdir -p /run/mysqld
  chown -R mysql:mysql /run/mysqld
fi
if [ ! -e /usr/my.cnf ]; then
  cat << EOF > /usr/my.cnf
[mysqld]
datadir=/var/lib/mysql
log-bin = /var/lib/mysql/mysql-bin
port = 3306
user = mysql
symbolic-links=0
character-set-server = utf8
pid-file=/run/mysqld/mysqld.pid
EOF
  chown -R mysql:mysql /var/lib/mysql
  mysql_install_db --user=mysql
  nohup /bin/sh /usr/bin/mysqld_safe \
    --datadir=/var/lib/mysql \
    --socket=/run/mysqld/mysqld.sock \
    --pid-file=/run/mysqld/mysqld.pid \
    --basedir=/usr \
    --user=mysql \
    --skip-grant-tables \
    --skip-networking &
  while :
  do
    [ -r /run/mysqld/mysqld.pid ] || continue
    if ps -ef | grep -q $(cat /run/mysqld/mysqld.pid) ; then
        break
    fi
    sleep 10
  done
  cat << EOF > /tmp/setupdb.sql
USE mysql;
UPDATE mysql.user SET Password=PASSWORD('adminer') WHERE User='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'adminer';
FLUSH PRIVILEGES;
EOF
  /usr/bin/mysql < /tmp/setupdb.sql
  cat << EOF > /tmp/createdb.sql
CREATE DATABASE adminer DEFAULT CHARACTER SET utf8mb4;
EOF
  /usr/bin/mysql -uroot -padminer < /tmp/createdb.sql
  kill `cat /run/mysqld/mysqld.pid`
  sleep 10
fi
exec /usr/bin/mysqld --defaults-file=/usr/my.cnf --console --user=mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

2. AdminerとMariaDBコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

docker-compose.yml
version: "2"
services:
  adminer:
    image: adminer:4.6
    container_name: "adminer"
    ports:
      - "8080:8080"
    depends_on:
      - db
  db:
    image: mariadb-adminer
    container_name: "db"
    volumes:
      - "db-data:/var/lib/mysql"
    ports:
      - "3306:3306"
volumes:
  db-data:
    driver: local

〇参考情報
Raspberry PiにDockerとdocker-composeをインストールするには以下の記事を参照してください。
Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする


〇関連情報
・Adminerに関する他の情報はこちらを参照してください。

・Adminerのプロジェクトwebサイト
https://www.adminer.org/

・Raspberry Pi上のDockerに関する他の記事はこちらを参照してください。