2018年2月23日金曜日

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

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

構築方法

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

Dockerfile
FROM alpine:3.7
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.0.zip \
  && unzip v1.2.0.zip \
  && rm -f v1.2.0.zip \
  && mkdir /opt \
  && mv /kanboard-1.2.0 /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とMySQLコンテナの構築・実行(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: hypriot/rpi-mysql:5.5
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    container_name: "kanboard-db"
    volumes:
      - "db-data:/var/lib/mysql"
    environment:
        MYSQL_DATABASE: kanboard
        MYSQL_ROOT_PASSWORD: kanboard
volumes:
  db-data:
    driver: local
  kanboard-data:
    driver: local

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

○Kanboardの画面


動作環境

動作環境: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

Raspberry Pi Raspbian GNU/Linux 9 (stretch)にdocker-composeをインストールする

以下の手順でdocker-composeをRaspberry Piにインストールできます。
1.Docker CEのインストール
Raspbian GNU/Linux 9 (stretch)上にDocker CEをインストールするを参照。

2.Docker Composeのインストール
sudo apt-get install python-pip
sudo pip install docker-compose
docker-compose -v


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

dockerでselfoss、MySQLがインストールされたコンテナのイメージを作成する

selfossはPHP製のフィードリーダーです。
以下の手順で、selfoss、MySQLのコンテナを構築・実行します。

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

Dockerfile
FROM alpine:3.7
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.17/selfoss-2.17.zip \
  && unzip selfoss-2.17.zip \
  && rm -f selfoss-2.17.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 $'<Directory /var/www/localhost/htdocs/selfoss>\n\
Options Indexes FollowSymLinks \n\
AllowOverride All\n\
Require all granted\n\
</Directory>' >> /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とMySQLコンテナの構築・実行(docker-compose.ymlがあるフォルダで実行)
docker-compose up -d

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

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

〇selfossの画面


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

VagrantでGantt Project、Xfce Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.3)を構築する

Gantt ProjectはMicrosoft Projectのようなプロジェクト管理ソフトウェアです。
以下のVagrantfileを使用して、Gantt Project、Xfce Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.3) を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "db93xfceganttproject"
config.vm.network "public_network", ip:"192.168.1.115", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db93xfceganttproject"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
cat << EOF > /etc/default/keyboard
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
EOF
cat << EOF > /home/vagrant/.xsessionrc
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/vagrant/.config/fcitx/profile
fcitx-remote -r
fcitx -r -d
EOF
chown vagrant:vagrant .xsessionrc
apt-get -y install  xrdp fcitx-mozc task-xfce-desktop tigervnc-standalone-server fcitx-tools

apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.6/VBoxGuestAdditions_5.2.6.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.6.iso /media/
/media/VBoxLinuxAdditions.run


export DISPLAY=:0.0
im-config -n fcitx
sudo -u vagrant bash -i -c "export DISPLAY=:0.0 && fcitx -r"
cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.org
cat /etc/xrdp/xrdp.ini.org | awk '/\\[Globals\\]/,/\\[Xorg\\]/' | sed -e 's/\\[Xorg\\]//' > /etc/xrdp/xrdp.ini
cat << EOF >> /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
EOF
systemctl restart xrdp
systemctl enable xrdp


# javaをインストール
apt-get -y install software-properties-common
add-apt-repository ppa:webupd8team/java
apt-get update
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections
apt-get install -y oracle-java8-installer oracle-java8-set-default

# install GanttProject
wget -O ganttproject.deb http://www.ganttproject.biz/dl/2.8.5/lin
dpkg -i ganttproject.deb

cat << EOF > /usr/share/applications/ganttproject.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/usr/bin/ganttproject
Name=Gantt Project
Categories=Development;
EOF


init 5
SHELL
end

〇Gantt Projectの画面

関連情報

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

VagrantでAnki、Gnome Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.3)を構築する

Ankiを使用して暗記カードのように繰り返し学習を行う事ができます。
以下のVagrantfileを使用して、Anki、Gnome Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.3)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.3"
  config.vm.hostname = "db93gnomeanki"
  config.vm.network "public_network", ip:"192.168.1.114", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db93gnomeanki"
     vbox.gui = true
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install task-japanese
sed -i -e 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/' /etc/locale.gen
locale-gen
update-locale LANG=ja_JP.UTF-8
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
cat << EOF > /etc/default/keyboard
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"
EOF
cat << EOF > /home/vagrant/.xprofile
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/vagrant/.config/fcitx/profile
fcitx-remote -r
fcitx -r -d
EOF
chown vagrant:vagrant .xprofile
apt-get -y install  xrdp fcitx-mozc task-gnome-desktop tigervnc-standalone-server
export DISPLAY=:0.0
im-config -n fcitx
sudo -u vagrant bash -i -c "export DISPLAY=:0.0 && fcitx -r"
cp /etc/xrdp/xrdp.ini /etc/xrdp/xrdp.ini.org
cat /etc/xrdp/xrdp.ini.org | gawk '/\\[Globals\\]/,/\\[Xorg\\]/' | sed -e 's/\\[Xorg\\]//' > /etc/xrdp/xrdp.ini
cat << EOF >> /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
EOF
systemctl restart xrdp
systemctl enable xrdp

# install Anki
apt-get -y install mplayer
wget https://apps.ankiweb.net/downloads/current/anki-2.0.47-amd64.tar.bz2
tar jxf anki-2.0.47-amd64.tar.bz2
mv anki-2.0.47 /opt/anki
chown -R vagrant:vagrant /opt/anki

sed -i -e 's#Exec=anki#Exec=/opt/anki/bin/anki#' /opt/anki/anki.desktop
sed -i -e 's#Icon=anki#Icon=/opt/anki/anki.png#' /opt/anki/anki.desktop
cp /opt/anki/anki.desktop /usr/share/applications

init 5
SHELL
end

〇Ankiの画面

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

2018年2月22日木曜日

DockerでH2 Databaseのイメージ・コンテナを構築する

H2 Databaseはjava製のRDBです。
以下の手順で、H2 Databaseのイメージ・コンテナを構築する事ができます。

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

Dockerfile
FROM alpine:3.7
RUN  apk update \
  && apk add --no-cache openjdk8 \
  && rm -rf /var/cache/apk/* \
  && mkdir -p /opt \
  && wget http://www.h2database.com/h2-2017-06-10.zip \
  && unzip h2-*.zip \
  && rm -f h2-*.zip \
  && mv h2 /opt \
  && mkdir -p /opt/h2/data
EXPOSE 9092 5435 8082
VOLUME /opt/h2/data
CMD ["java", "-cp", "/opt/h2/bin/h2-1.4.196.jar", "org.h2.tools.Server", "-tcp", "-tcpAllowOthers", "-web", "-webAllowOthers", "-pg", "-pgAllowOthers", "-baseDir", "/opt/h2/data"]

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

docker-compose.yml
version: "2"
services:
  h2db:
    image: h2db
    container_name: "h2db"
    volumes:
      - "h2db-data:/opt/h2/data"
    ports:
      - "9092:9092"
      - "5435:5435"
      - "8082:8082"
volumes:
  h2db-data:
    driver: local

3.ブラウザからhttp://<Dockerホスト名またはIP>:8092/にアクセス
ログイン時にGeneric H2 (Server)を選択し、JDBC URLでjdbc:h2:tcp:///testを入力し、ユーザ名sa、パスワードなしを指定します。

○H2DBのwebインターフェイス画面


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

VagrantでEasy!AppointmentsとMariaDBがインストールされた仮想マシン(Ubuntu16.04)を構築する

Easy!Appointmentsでスケジュールを管理する事ができます。
以下のVagrantfileを使用して、Easy!AppointmentsとMariaDBをインストールした仮想マシン(Ubuntu16.04)を構築する事ができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-16.04"
  config.vm.hostname = "ub1604easyappointmentsmariadb"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1604easyappointmentsmariadb"
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "private_network", ip: "192.168.55.105", :netmask => "255.255.255.0"
config.vm.network "public_network", ip:"192.168.1.105", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
# update packages
apt-get update
#DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

# install mariadb
echo "mariadb-server-10.0 mysql-server/root_password password root" | sudo debconf-set-selections
echo "mariadb-server-10.0 mysql-server/root_password_again password root" | sudo debconf-set-selections
apt-get -y install mariadb-server
mysql -uroot -proot -e "CREATE DATABASE easyappointments DEFAULT CHARACTER SET utf8;"
mysql -uroot -proot -e "CREATE USER easyappointments@localhost IDENTIFIED BY 'easyappointments';"
mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON easyappointments.* TO 'easyappointments'@'localhost';"
mysql -uroot -proot -e "FLUSH PRIVILEGES;"


# install Easy!Appointments
apt-get -y install apache2 apache2-bin libapache2-mod-php7.0 php7.0-mysql php7.0-mbstring php7.0-xml php7.0-json unzip
mkdir -p /opt/easyappointments
cd /opt/easyappointments
wget https://github.com/alextselegidis/easyappointments/releases/download/1.2.1/easyappointments_1.2.1.zip
unzip easyappointments_1.2.1.zip
sed -i -e "s#http://url-to-easyappointments-directory#http://192.168.55.105/easyappointments/#" /opt/easyappointments/config.php
sed -i -e "s#DB_HOST.*= '';#DB_HOST       = 'localhost';#" /opt/easyappointments/config.php
sed -i -e "s#DB_NAME.*= '';#DB_NAME       = 'easyappointments';#" /opt/easyappointments/config.php
sed -i -e "s#DB_USERNAME.*= '';#DB_USERNAME   = 'easyappointments';#" /opt/easyappointments/config.php
sed -i -e "s#DB_PASSWORD.*= '';#DB_PASSWORD   = 'easyappointments';#" /opt/easyappointments/config.php

chown -R www-data:www-data /opt/easyappointments
ln -s  /opt/easyappointments /var/www/html
service apache2 restart

echo 'access http://192.168.1.105/easyappointments/'
echo 'user: easyappointments password:easyappointments db:easyappointments'
SHELL
end

〇Easy!Appointmentsの初期設定画面


〇Easy!Appointmentsの画面



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