2019年5月31日金曜日

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

Vivaldiは高速・セキュア・フレキシブルなブラウザです。

〇Vivaldiの画面


仮想マシンの構築方法

以下のVagrantfileを使用して、Vivaldi、Cinnamon Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96cinnamonvivaldi"
config.vm.network "public_network", ip:"192.168.1.107", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96cinnamonvivaldi"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install task-japanese gawk
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-cinnamon-desktop tigervnc-standalone-server

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

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 Vivaldi
apt-get -y install libappindicator3-1 libdbusmenu-glib4 libdbusmenu-gtk3-4 libindicator3-7
wget https://downloads.vivaldi.com/stable/vivaldi-stable_2.3.1440.60-1_amd64.deb
dpkg -i vivaldi-stable_2.3.1440.60-1_amd64.deb

init 5
SHELL
end

関連情報

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

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

Opera Browserは、高速で安全なブラウザです。

〇Opera Browserの画面


〇構築方法
以下のVagrantfileを使用して、Opera Browser、KDE Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96kdeopera"
config.vm.network "public_network", ip:"192.168.1.109", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96kdeopera"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive 
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

apt-get -y install task-japanese gawk
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=mozc:True,fcitx-keyboard-jp:False,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-kde-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

# install Opera
apt-get -y install apt-transport-https
wget http://download4.operacdn.com/ftp/pub/opera/desktop/58.0.3135.79/linux/opera-stable_58.0.3135.79_amd64.deb
dpkg -i opera-stable_58.0.3135.79_amd64.deb

init 5
SHELL
end


○関連情報
・Operaブラウザーに関する他の記事はこちらを参照してください。

2019年5月30日木曜日

Dockerでpython3.7とnewspaper3kをインストールしたコンテナ(Alpine3.9ベース)を作成する

newspaper3kでウェブページを読み込んで解析する事ができます。

以下のコマンドとDockerfileを使用してpython3.7とnewspaper3kがインストールされたイメージを作成する事ができます。
docker build -t newspaper3k:1.0 .

Dockerfile
FROM python:3.7-alpine3.9
RUN apk --no-cache add libstdc++ \
    libxml2 \
    libxslt \
    libjpeg-turbo \
  && apk --no-cache --virtual pydeps add gcc \
    g++ \
    python3-dev \
    musl-dev \
    cython \
    libxml2-dev \
    libxslt-dev \
    jpeg-dev \
    zlib-dev \
    libpng-dev \
  && pip install newspaper3k \
  && apk del --purge pydeps
CMD ["/bin/sh"]

以下のコマンドでサンプルコードを実行して、ウェブページから題名、本文を表示します。
docker run -v `pwd`:/tmp --rm -it newspaper3k:1.0 /usr/local/bin/python3 /tmp/test.py

test.py
from newspaper import Article
a = Article('http://serverarekore.blogspot.com/2019/05/dockerpython37janomealpine39.html', language='ja')
a.download()
a.parse()
# print title/text of the page.
print(a.title)
print(a.text)

VagrantでEclipse 2019-03とAdoptOpenJDK11、LXDE Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.6)を構築する

EclipseはオープンソースのIDEです。

〇Eclipse 2019-03の画面


○構築方法
以下のVagrantfileを使用して、Eclipse 2019-03とAdoptOpenJDK11、LXDE Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96lxdeeclipse201903"
config.vm.network "public_network", ip:"192.168.1.103", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96lxdeeclipse201903"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

apt-get -y install task-japanese gawk
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/.xsession
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
lxsession -s LXDE -e LXDE
EOF
chown vagrant:vagrant .xsession


apt-get -y install  xrdp fcitx-mozc task-lxde-desktop tigervnc-standalone-server fcitx-tools


apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.22/VBoxGuestAdditions_5.2.22.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.22.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

# install AdoptOpenJDK11
cd /opt
wget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.3_7.tar.gz
tar xvfz OpenJDK11U-jdk_x64_linux_hotspot_11.0.3_7.tar.gz
cat << EOF > /etc/profile.d/jdk.sh
export JAVA_HOME=/opt/jdk-11.0.3+7
export PATH=\\$PATH:\\$JAVA_HOME/bin
EOF

# install eclipse 201903
wget http://ftp.jaist.ac.jp/pub/eclipse/technology/epp/downloads/release/2019-03/R/eclipse-java-2019-03-R-linux-gtk-x86_64.tar.gz
tar xvfz eclipse-java-2019-03-R-linux-gtk-x86_64.tar.gz

cat << EOF > /usr/share/applications/eclipse.desktop
#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/eclipse/eclipse
Name=eclipse
Categories=Development;
Icon=/opt/eclipse/icon.xpm
EOF

init 5
SHELL
end

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

tempsはシンプルな天気アプリケーションです。

〇tempsの画面


〇構築方法
以下のVagrantfileを使用して、temps、Cinnamon Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96cinnamontemps"
config.vm.network "public_network", ip:"192.168.1.107", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96cinnamontemps"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install task-japanese gawk
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-cinnamon-desktop tigervnc-standalone-server

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

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 Temps
cd /opt
apt-get -y install gconf2 libcanberra-gtk-module libcanberra-gtk3-module
wget https://github.com/jackd248/temps/releases/download/v0.7.0/Temps-linux-x64.zip
unzip Temps-linux-x64.zip
cat << EOF > /usr/share/applications/temps.desktop
[Desktop Entry]
Type=Application
Version=1.0
Name=Temps
Exec=/opt/Temps-linux-x64/Temps
Categories=Utility;
EOF

init 5
SHELL
end

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

Brave Browserは、オープンソースのセキュアなブラウザです。

〇Brave Browserの画面


〇構築方法
以下のVagrantfileを使用して、Brave Browser、LXDE Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804xfcebrave"
config.vm.network :public_network, ip:"192.168.1.109"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1804xfcebrave"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
apt-get -y install language-pack-ja
sed -i.bak -e "s#http://archive.ubuntu.com/ubuntu/#http://ftp.riken.jp/pub/Linux/ubuntu/#g" /etc/apt/sources.list
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
apt-get -y install xrdp=0.9.5-2 fcitx-mozc xubuntu-desktop language-pack-ja language-pack-ja
im-config -n fcitx

apt-get -y install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04
apt-get -y install virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11

sed -i -e "s/allowed_users=console/allowed_users=anybody/" /etc/X11/Xwrapper.config

echo "xfce4-session" > /home/vagrant/.xsession
apt-get -y purge light-locker

# install brave
curl -s https://brave-browser-apt-release.s3.brave.com/brave-core.asc | sudo apt-key --keyring /etc/apt/trusted.gpg.d/brave-browser-release.gpg add -
source /etc/os-release
echo "deb [arch=amd64] https://brave-browser-apt-release.s3.brave.com/ $UBUNTU_CODENAME main" | sudo tee /etc/apt/sources.list.d/brave-browser-release-${UBUNTU_CODENAME}.list
apt-get update
export DEBIAN_FRONTEND=noninteractive && apt-get -o Dpkg::Options::="--force-confold" --force-yes -y install brave-browser brave-keyring


init 5
SHELL
end


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

2019年5月29日水曜日

Dockerでpython3.7とJanomeをインストールしたコンテナ(Alpine3.9ベース)を作成する

Janomeで日本語の文書を形態素解析する事ができます。

以下のコマンドとDockerfileを使用してpython3.7とJanomeがインストールされたイメージを作成する事ができます。
docker build -t pyjanome:1.0 .

Dockerfile
FROM python:3.7-alpine3.9
RUN pip install janome
CMD ["/bin/sh"]

以下のコマンドでサンプルコードを実行して、日本語文章を形態素解析を実行した結果を表示します。
docker run -v `pwd`:/tmp --rm -it pyjanome:1.0 /usr/local/bin/python3 /tmp/test.py

test.py
from janome.tokenizer import Tokenizer
sample="Janomeで形態素解析を行うことができます。"
for token in Tokenizer().tokenize(sample):
  print(token)

VagrantでBlender、Xfce Desktop環境、XRDPがインストールされた仮想マシン(CentOS7.6)を構築する

Blenderはオープンソースの3D CG作成ソフトウェアです。

〇Blenderの画面


〇構築方法
以下のVagrantfileを使用して、Blender、Xfce Desktop環境、XRDPをインストールした仮想マシン(CentOS7.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/centos-7.6"
  config.vm.hostname = "co76xfceblender"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "co76xfceblender"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
     vbox.customize ["modifyvm", :id, "--nicpromisc2","allow-all"]
  end
config.vm.network "public_network", ip: "192.168.1.103", :netmask => "255.255.255.0"
  config.vm.provision "shell", inline: <<-SHELL
localectl set-locale LANG=ja_JP.UTF-8
yum install -y epel-release
yum check-update
yum -y update
timedatectl set-timezone Asia/Tokyo

yum -y install vlgothic-*  ipa-*-fonts unzip epel-release
yum -y groupinstall yum groupinstall "X Window System"  Xfce "Input Methods"
yum -y install xrdp

cat << EOF >> /home/vagrant/.Xclients
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -drx
exec /usr/bin/xfce4-session
EOF
chmod +x /home/vagrant/.Xclients
chown vagrant:vagrant /home/vagrant/.Xclients

# hide dialogs
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-welcome-tour.desktop"
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-software-service.desktop"
sudo sh -c "echo 'X-GNOME-Autostart-enabled=false' >> /etc/xdg/autostart/gnome-settings-daemon.desktop"
sudo systemctl disable initial-setup-graphical.service
sudo systemctl disable initial-setup-text.service

systemctl set-default graphical.target

systemctl enable xrdp.service
systemctl start xrdp.service

# install Blender
yum -y install mesa-libGLU-devel
cd /opt
wget https://download.blender.org/release/Blender2.79/blender-2.79b-linux-glibc219-x86_64.tar.bz2
tar jxvf blender-2.79b-linux-glibc219-x86_64.tar.bz2
cat << EOF > /usr/share/applications/blender.desktop
[Desktop Entry]
Type=Application
Version=1.0
Name=Blender
Icon=/opt/blender-2.79b-linux-glibc219-x86_64/blender.svg
Exec=/opt/blender-2.79b-linux-glibc219-x86_64/blender
Categories=Graphics;
EOF

telinit 5
SHELL
end


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

DockerでGeoDaとXfceデスクトップ環境がインストールされたイメージ(Ubuntu18.04)を作成する

GeoDaはオープンソースの空間分析アプリケーションです。

〇GeoDaの画面

Remote Desktop Clientから接続するときにユーザ名/パスワードにubuntu/ubuntuを指定します。

〇イメージのビルド
docker build -t ub1804xfcegeoda .

Dockerfile
from ubuntu:18.04

ENV DEBIAN_FRONTEND=noninteractive
run apt-get update \
  && apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade \
  && apt-get install -y language-pack-ja-base language-pack-ja \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && echo 'Asia/Tokyo' > /etc/timezone \
  && locale-gen ja_JP.UTF-8 \
  && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \
  && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale
env LANG=ja_JP.UTF-8 \
   LANGUAGE=ja_JP.UTF-8 \
   LC_ALL=ja_JP.UTF-8
run apt-get -y install \
      xubuntu-desktop \
      xrdp=0.9.5-2 \
      fcitx-mozc \
      fonts-ipafont-gothic \
      fonts-ipafont-mincho \
      vim \
      gvfs-bin \
      xdg-utils \
      libcurl4-openssl-dev \
      libgdal-dev \
      freeglut3 \
      libwebkitgtk-1.0-0 \
  && wget https://s3-us-west-2.amazonaws.com/geodasoftware/geoda_1.12-ubuntu1804.deb \
  && dpkg -i geoda_1.12-ubuntu1804.deb \
  && im-config -n fcitx \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -g 1000 ubuntu \
  && useradd -d /home/ubuntu -m -s /bin/bash -u 1000 -g 1000 ubuntu \
  && echo 'ubuntu:ubuntu' | chpasswd \
  && echo "ubuntu ALL=NOPASSWD: ALL" >> /etc/sudoers \
  && echo 'sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/ubuntu/.config/fcitx/profile' >> /home/ubuntu/.xsessionrc \
  && chown ubuntu:ubuntu /home/ubuntu/.xsessionrc \
  && echo 'xfce4-session' >> /home/ubuntu/.xsession \
  && mkdir /home/ubuntu/data \
  && chown -R ubuntu:ubuntu /home/ubuntu/data \
  && echo '#!/bin/bash' > /start.sh \
  && echo 'export GTK_IM_MODULE=fcitx' > /start.sh \
  && echo 'export QT_IM_MODULE=fcitx' >> /start.sh \
  && echo 'export XMODIFIERS="@im=fcitx"' >> /start.sh \
  && echo 'startxfce4' >> /start.sh \
  && echo 'sudo /etc/init.d/xrdp start' >> /start.sh \
  && echo 'sudo /etc/init.d/dbus start' >> /start.sh \
  && echo 'fcitx -r -d &' >> /start.sh \
  && echo '/bin/bash' >> /start.sh \
  && chmod +x /start.sh

expose 3389
volume ["/home/ubuntu/data"]
cmd /start.sh

〇コンテナの実行
docker run -it -v `pwd`:/home/ubuntu/work -p 3389:3389 -u ubuntu --privileged ub1804xfcegeoda


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

DockerでSpeedCrunchとXfceデスクトップ環境がインストールされたイメージ(Ubuntu18.04)を作成する

SpeedCrunchは、高精度の科学用関数電卓です。

〇SpeedCrunchの画面

Remote Desktop Clientから接続するときにユーザ名/パスワードにubuntu/ubuntuを指定します。

〇イメージのビルド
docker build -t ub1804xfcespeedcrunch .

Dockerfile
from ubuntu:18.04

run apt-get update \
  && apt-get install -y language-pack-ja-base language-pack-ja \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && echo 'Asia/Tokyo' > /etc/timezone \
  && locale-gen ja_JP.UTF-8 \
  && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \
  && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale
env LANG=ja_JP.UTF-8 \
   LANGUAGE=ja_JP.UTF-8 \
   LC_ALL=ja_JP.UTF-8
run DEBIAN_FRONTEND=noninteractive apt-get -y install \
      xubuntu-desktop \
      xrdp=0.9.5-2 \
      fcitx-mozc \
      fonts-ipafont-gothic \
      fonts-ipafont-mincho \
      vim \
      gvfs-bin \
      xdg-utils \
  && wget https://bitbucket.org/heldercorreia/speedcrunch/downloads/SpeedCrunch-0.12-linux64.deb \
  && dpkg -i SpeedCrunch-0.12-linux64.deb \
  && im-config -n fcitx \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -g 1000 ubuntu \
  && useradd -d /home/ubuntu -m -s /bin/bash -u 1000 -g 1000 ubuntu \
  && echo 'ubuntu:ubuntu' | chpasswd \
  && echo "ubuntu ALL=NOPASSWD: ALL" >> /etc/sudoers \
  && echo 'sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/ubuntu/.config/fcitx/profile' >> /home/ubuntu/.xsessionrc \
  && chown ubuntu:ubuntu /home/ubuntu/.xsessionrc \
  && echo 'xfce4-session' >> /home/ubuntu/.xsession \
  && mkdir /home/ubuntu/data \
  && chown -R ubuntu:ubuntu /home/ubuntu/data \
  && echo '#!/bin/bash' > /start.sh \
  && echo 'export GTK_IM_MODULE=fcitx' > /start.sh \
  && echo 'export QT_IM_MODULE=fcitx' >> /start.sh \
  && echo 'export XMODIFIERS="@im=fcitx"' >> /start.sh \
  && echo 'startxfce4' >> /start.sh \
  && echo 'sudo /etc/init.d/xrdp start' >> /start.sh \
  && echo 'sudo /etc/init.d/dbus start' >> /start.sh \
  && echo 'fcitx -r -d &' >> /start.sh \
  && echo '/bin/bash' >> /start.sh \
  && chmod +x /start.sh

expose 3389
volume ["/home/ubuntu/data"]
cmd /start.sh

〇コンテナの実行
docker run -it -v `pwd`:/home/ubuntu/work -p 3389:3389 -u ubuntu ub1804xfcespeedcrunch


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

VagrantでTalend Open Studio for Data Integration7.1.1とAdoptOpenJDK、Xfce Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.6)を構築する

TalendはオープンソースのJava製のETLアプリケーションです。

〇Talendの画面

このVMにはXRDPもインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

仮想マシンの構築方法

以下のVagrantfileを使用して、Talend Open Studio for Data Integration7.1.1とAdoptOpenJDK、Xfce Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96xfcetosdi711"
config.vm.network "public_network", ip:"192.168.1.106", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96xfcetosdi711"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install task-japanese gawk
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
#startxfce4 &
EOF
chown vagrant:vagrant .xsessionrc

apt-get -y install  xrdp fcitx-mozc task-xfce-desktop tigervnc-standalone-server
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 AdoptOpenJDK11
#cd /opt
#wget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.3_7.tar.gz
#tar xvfz OpenJDK11U-jdk_x64_linux_hotspot_11.0.3_7.tar.gz
#cat << EOF > /etc/profile.d/jdk.sh
#export JAVA_HOME=/opt/jdk-11.0.3+7
#export PATH=\\$PATH:\\$JAVA_HOME/bin
#EOF
#update-alternatives --install /usr/bin/java java /opt/jdk-11.0.3+7/bin/java 2000
#update-alternatives --install /usr/bin/javac javac /opt/jdk-11.0.3+7/bin/javac 2000

# install AdoptOpenJDK8
cd /opt
wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03/OpenJDK8U-jdk_x64_linux_hotspot_8u212b03.tar.gz
tar xvfz OpenJDK8U-jdk_x64_linux_hotspot_8u212b03.tar.gz
cat << EOF > /etc/profile.d/jdk.sh
export JAVA_HOME=/opt/jdk8u212-b03
export PATH=\\$PATH:\\$JAVA_HOME/bin
EOF
update-alternatives --install /usr/bin/java java /opt/jdk8u212-b03/bin/java 2000
update-alternatives --install /usr/bin/javac javac /opt/jdk8u212-b03/bin/javac 2000


# install Talend Open Studio
wget 'https://sourceforge.net/projects/talend-studio/files/Talend%20Open%20Studio/7.1.1/TOS_DI-20181026_1147-V7.1.1.zip'
unzip TOS_DI-20181026_1147-V7.1.1.zip
mv TOS_DI-20181026_1147-V7.1.1 /opt/tosdi

# create a shortcut for Talend Open Studio for Data Integration
cat << EOF > /usr/share/applications/tosdi.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/tosdi/TOS_DI-linux-gtk-x86_64
Name=Talend Open Studio for Data Integration
Categories=Utility;Development;
EOF

init 5
SHELL
end

関連情報

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

2019年5月28日火曜日

Dockerでpython3.7とPyYAMLをインストールしたコンテナ(Alpine3.9ベース)を作成する

PyYAMLでyamlファイルを読み込んで解析する事ができます。

以下のコマンドとDockerfileを使用してpython3.7とPyYAMLがインストールされたイメージを作成する事ができます。
docker build -t pyyaml:1.0 .

Dockerfile
FROM python:3.7-alpine3.9
RUN pip install PyYAML 
CMD ["/bin/sh"]

以下のコマンドでサンプルコードを実行して、テンプレートを使用してHello World!を表示します。
docker run -v `pwd`:/tmp --rm -it pyyaml:1.0 /usr/local/bin/python3 /tmp/test.py

test.py
import yaml

yamltext = """version: "2"
services:
  adminer:
    image: adminer:4.7
    container_name: "adminer"
    ports:
      - "8080:8080"
"""
print(yaml.load(yamltext))

DockerでKolourPaintとXfceデスクトップ環境がインストールされたイメージ(Ubuntu18.04)を作成する

KolourPaintはシンプルなペイントプログラムです。

〇KolourPaintの画面
Remote Desktop Clientから接続するときにユーザ名/パスワードにubuntu/ubuntuを指定します。

〇イメージのビルド
docker build -t ub1804xfcekolourpaint .

Dockerfile
from ubuntu:18.04

run apt-get update \
  && apt-get -y upgrade \
  && apt-get install -y language-pack-ja-base language-pack-ja \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && echo 'Asia/Tokyo' > /etc/timezone \
  && locale-gen ja_JP.UTF-8 \
  && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \
  && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale
env LANG=ja_JP.UTF-8 \
   LANGUAGE=ja_JP.UTF-8 \
   LC_ALL=ja_JP.UTF-8
run DEBIAN_FRONTEND=noninteractive apt-get -y install \
      xubuntu-desktop \
      xrdp=0.9.5-2 \
      fcitx-mozc \
      fonts-ipafont-gothic \
      fonts-ipafont-mincho \
      vim \
      gvfs-bin \
      xdg-utils \
      kolourpaint \
  && im-config -n fcitx \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -g 1000 ubuntu \
  && useradd -d /home/ubuntu -m -s /bin/bash -u 1000 -g 1000 ubuntu \
  && echo 'ubuntu:ubuntu' | chpasswd \
  && echo "ubuntu ALL=NOPASSWD: ALL" >> /etc/sudoers \
  && echo 'sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/ubuntu/.config/fcitx/profile' >> /home/ubuntu/.xsessionrc \
  && chown ubuntu:ubuntu /home/ubuntu/.xsessionrc \
  && echo 'xfce4-session' >> /home/ubuntu/.xsession \
  && mkdir /home/ubuntu/data \
  && chown -R ubuntu:ubuntu /home/ubuntu/data \
  && echo '#!/bin/bash' > /start.sh \
  && echo 'export GTK_IM_MODULE=fcitx' > /start.sh \
  && echo 'export QT_IM_MODULE=fcitx' >> /start.sh \
  && echo 'export XMODIFIERS="@im=fcitx"' >> /start.sh \
  && echo 'startxfce4' >> /start.sh \
  && echo 'sudo /etc/init.d/xrdp start' >> /start.sh \
  && echo 'sudo /etc/init.d/dbus start' >> /start.sh \
  && echo 'fcitx -r -d &' >> /start.sh \
  && echo '/bin/bash' >> /start.sh \
  && chmod +x /start.sh

expose 3389
volume ["/home/ubuntu/data"]
cmd /start.sh

〇コンテナの実行
docker run -it -v `pwd`:/home/ubuntu/work -p 3389:3389 -u ubuntu --privileged ub1804xfcekolourpaint


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

2019年5月27日月曜日

Dockerでpython3.7とJinja2をインストールしたコンテナ(Alpine3.9ベース)を作成する

Jinja2はPytonで代表的なテンプレートエンジンの一つです。

以下のコマンドとDockerfileを使用してpython3.7とJinja2がインストールされたイメージを作成する事ができます。
docker build -t jinja2:1.0 .

Dockerfile
FROM python:3.7-alpine3.9
RUN pip install jinja2
CMD ["/bin/sh"]

以下のコマンドでサンプルコードを実行して、テンプレートを使用してHello World!を表示します。
docker run -v `pwd`:/tmp --rm -it jinja2:1.0 /usr/local/bin/python3 /tmp/test.py

test.py
from jinja2 import Template
template = Template('Hello {{ name }}!')
print(template.render(name='World'))

VagrantでPentaho Data Integration CE 8.2とAdoptOpenJDK、Xfce Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.6)を構築する

Pentaho Data IntegrationはオープンソースのETLツールです。

〇Pentaho Data Integration CE 8.2の画面

〇構築方法
以下のVagrantfileを使用して、Pentaho Data Integration CE 8.2、Xfce Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96xfcepdice82"
config.vm.network "public_network", ip:"192.168.1.106", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96xfcepdice82"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install task-japanese gawk
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
#startxfce4 &
EOF
chown vagrant:vagrant .xsessionrc

apt-get -y install  xrdp fcitx-mozc task-xfce-desktop tigervnc-standalone-server
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 AdoptOpenJDK11
#cd /opt
#wget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.3_7.tar.gz
#tar xvfz OpenJDK11U-jdk_x64_linux_hotspot_11.0.3_7.tar.gz
#cat << EOF > /etc/profile.d/jdk.sh
#export JAVA_HOME=/opt/jdk-11.0.3+7
#export PATH=\\$PATH:\\$JAVA_HOME/bin
#EOF
#update-alternatives --install /usr/bin/java java /opt/jdk-11.0.3+7/bin/java 2000
#update-alternatives --install /usr/bin/javac javac /opt/jdk-11.0.3+7/bin/javac 2000

# install AdoptOpenJDK8
cd /opt
wget https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03/OpenJDK8U-jdk_x64_linux_hotspot_8u212b03.tar.gz
tar xvfz OpenJDK8U-jdk_x64_linux_hotspot_8u212b03.tar.gz
cat << EOF > /etc/profile.d/jdk.sh
export JAVA_HOME=/opt/jdk8u212-b03
export PATH=\\$PATH:\\$JAVA_HOME/bin
EOF
update-alternatives --install /usr/bin/java java /opt/jdk8u212-b03/bin/java 2000
update-alternatives --install /usr/bin/javac javac /opt/jdk8u212-b03/bin/javac 2000


# install pentaho data integration CE 8.2
cd /opt
wget 'https://sourceforge.net/projects/pentaho/files/Pentaho%208.2/client-tools/pdi-ce-8.2.0.0-342.zip'
unzip pdi-ce-8.2.0.0-342.zip
cat << EOF > /usr/share/applications/pdice82.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/data-integration/spoon.sh
Name=Pentaho Data Integration CE
Categories=Development;
EOF


init 5
SHELL
end

関連情報

DockerでDebian 11(Bullseye)のXfceデスクトップ環境にリモートデスクトップで接続できるコンテナを作成する

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

Marbleは地球や月を地球儀/地図で表示できるアプリケーションです。

〇Marbleの画面


〇構築方法
以下のVagrantfileを使用して、Marble、LXDE Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96lxdemarble"
config.vm.network "public_network", ip:"192.168.1.103", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96lxdemarble"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

apt-get -y install task-japanese gawk
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/.xsession
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
lxsession -s LXDE -e LXDE
EOF
chown vagrant:vagrant .xsession


apt-get -y install  xrdp fcitx-mozc task-lxde-desktop tigervnc-standalone-server fcitx-tools


apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.22/VBoxGuestAdditions_5.2.22.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.22.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

# install Marble
apt-get -y install marble

init 5
SHELL
end


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

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

QOwnNotesは、オープンソースのマークダウンエディタです。

〇QOwnNotesの画面


〇構築方法
以下のVagrantfileを使用して、QOwnNotes、Cinnamon Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96cinnamonqownnotes"
config.vm.network "public_network", ip:"192.168.1.107", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96cinnamonqownnotes"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  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 gawk
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-cinnamon-desktop tigervnc-standalone-server

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

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 QOwnNotes
wget http://download.opensuse.org/repositories/home:/pbek:/QOwnNotes/Debian_9.0/Release.key -O - | apt-key add -
echo 'deb http://download.opensuse.org/repositories/home:/pbek:/QOwnNotes/Debian_9.0/ /' >> /etc/apt/sources.list.d/qownnotes.list
apt-get update
apt-get -y install qownnotes

init 5
SHELL
end

2019年5月26日日曜日

Dockerでpython3.7とpysmbをインストールしたコンテナ(Alpine3.9ベース)を作成する

pysmbを使用して、CIFS/SMBプロトコルを使用できるプログラムを作成する事ができます。

以下のコマンドとDockerfileを使用してpython3.7とpysmbがインストールされたイメージを作成する事ができます。
docker build -t pysmb:1.0 .

Dockerfile
FROM python:3.7-alpine3.9
RUN apk --no-cache add libstdc++ \
  && apk --no-cache --virtual pydeps add gcc \
    g++ \
    python3-dev \
    musl-dev \
    cython \
  && pip install pysmb \
  && apk del --purge pydeps
CMD ["/bin/sh"]

以下のコマンドでサンプルコードを実行してIPアドレスからNetBIOSを使用してホスト名を取得します。
docker run -v `pwd`:/tmp --rm -it pysmb:1.0 /usr/local/bin/python3 /tmp/test.py

test.py
from nmb.NetBIOS import NetBIOS
import sys

remote_ip = "192.168.1.50"
srv_name=""
timeout=10 # 10 sec
bios = NetBIOS()
srv_name = bios.queryIPForName(remote_ip, timeout=timeout)
bios.close()
if srv_name is None:
  print(remote_ip + " is not found.")
else:
  print(srv_name[0] + " is found.")

VagrantでPortainerとDockerをインストールした仮想マシン(Ubuntu18.04)を構築する

Portainerは軽量なDocker管理インターフェイスです。シンプルで分かりやすくDockerを操作する事ができます。

〇Portainerの画面


○構築方法
1.以下のVagrantfileを使用して、Portainer/Docker/Docker Composeがインストールされた仮想マシン(Ubuntu18.04)を構築する事ができます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804portainer"
config.vm.network :public_network, ip:"192.168.1.104"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1804portainer"
     vbox.cpus = 4
     vbox.memory = 4096
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install language-pack-ja
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update

# install docker-ce
apt-get -y install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
apt-get update
apt-get -y install docker-ce docker-ce-cli containerd.io

groupadd docker
adduser vagrant docker
systemctl enable docker
docker version

# install docker compose
curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

mkdir -p /opt/portainer

docker swarm init --advertise-addr 192.168.1.104  | grep -e '--token' | sed -e 's/    //' - > /vagrant/joincmd.sh
docker service create \
  --name portainer \
  --publish 9000:9000 \
  --replicas=1 \
  --constraint 'node.role == manager' \
  --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
  --mount type=bind,src=/opt/portainer,dst=/data \
  portainer/portainer \
  -H unix:///var/run/docker.sock

echo 'access to http://192.168.1.104:9000'
SHELL
end

2.ブラウザから192.168.1.104:9000にアクセスして、管理者情報を入力します。

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

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

UlauncherはLinux用のランチャーアプリケーションです。

〇Ulauncherの画面


〇構築方法
以下のVagrantfileを使用して、Ulauncher、Xfce Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96lxdeulauncher"
config.vm.network "public_network", ip:"192.168.1.103", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96lxdeulauncher"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

apt-get -y install task-japanese gawk
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/.xsession
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
lxsession -s LXDE -e LXDE
EOF
chown vagrant:vagrant .xsession


apt-get -y install  xrdp fcitx-mozc task-lxde-desktop tigervnc-standalone-server fcitx-tools


apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.22/VBoxGuestAdditions_5.2.22.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.22.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

# install Ulauncher
apt-get -y install libappindicator3-1 libdbusmenu-glib4 libdbusmenu-gtk3-4 libindicator3-7 gir1.2-appindicator3-0.1 python-levenshtein python-pysqlite2 python-websocket python-xdg python-pyinotify libkeybinder-3.0-0 gir1.2-keybinder-3.0 gir1.2-webkit2-4.0
wget https://github.com/Ulauncher/Ulauncher/releases/download/4.3.2.r8/ulauncher_4.3.2.r8_all.deb
dpkg -i ulauncher_4.3.2.r8_all.deb

init 5
SHELL
end


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

VagrantでInkscape、Xfce Desktop環境、XRDPがインストールされた仮想マシン(Ubuntu18.04)を構築する

Inkscapeはオープンソースの画像編集ソフトウェアです。

〇Inkscapeの画面


〇構築方法
以下のVagrantfileを使用して、Inkscape、Xfce Desktop環境、XRDPをインストールした仮想マシン(Ubuntu18.04)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804xfceinkscape"
config.vm.network :public_network, ip:"192.168.1.109"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1804xfceinkscape"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install language-pack-ja
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
apt-get -y install xrdp=0.9.5-2 fcitx-mozc xubuntu-desktop
im-config -n fcitx

apt-get -y install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04
apt-get -y install virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11

sed -i -e "s/allowed_users=console/allowed_users=anybody/" /etc/X11/Xwrapper.config

echo "xfce4-session" > /home/vagrant/.xsession
apt-get -y purge light-locker

# install Inkscape
add-apt-repository ppa:inkscape.dev/stable
apt-get update
apt-get -y install inkscape

init 5
SHELL
end


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

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

Palapeliは、ジグゾーパズルゲームです。

〇Palapeliの画面


〇構築方法
以下のVagrantfileを使用して、Palapeli、Cinnamon Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96cinnamonpalapeli"
config.vm.network "public_network", ip:"192.168.1.107", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96cinnamonpalapeli"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  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 gawk
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-cinnamon-desktop tigervnc-standalone-server

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

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 Palapeli
apt-get -y install palapeli

init 5
SHELL
end


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

・ゲームに関する記事一覧は、こちらを参照してください。

2019年5月25日土曜日

Adminerでデータベース種類・サーバ名・データベース名を入力した状態のログインフォームを表示する

URLでデータベースのデータベース種類・サーバー名・データベース名を指定してログインフォームに入力した状態のページを表示する事ができます。

〇PostgreSQLの場合
http://<サーバ名またはIPアドレス>:<ポート>/?pgsql=<サーバ名またはIP>:<ポート>&db=<データベース名>

http://<サーバ名またはIPアドレス>:<ポート>/?pgsql=<サーバ名またはIP>&db=<データベース名>

例:
http://192.168.1.20:8080/?pgsql=192.168.1.10:5432&db=mydb

〇MySQLの場合は
http://<サーバ名またはIPアドレス>:<ポート>/?server=<サーバ名またはIP>&db=<データベース名>

〇確認バージョン
Adminer4.7


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

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

Docker上のAdminer4.7でlogin-serversプラグインを使用する

login-serversプラグインで複数のサーバーとドライバーのペアをドロップダウンリストボックスから選択できます。

〇login-serversプラグインを使用した時のログイン画面


〇必須ファイル
login-servers-.phpを作成して、以下のようにAdminerLoginServerのコンストラクタにサーバー定義の配列を渡します
login-servers.php
<?php
require_once('plugins/login-servers.php');
/** Set supported servers
        * @param array array($description => array("server" => , "driver" => "server|pgsql|sqlite|..."))
        */
return new AdminerLoginServers([
    "pg1" => ["server" => "192.168.1.10:5432", "driver" => "pgsql"],
    "pg2" => ["server" => "192.168.1.20:5432", "driver" => "pgsql"]
]);

〇実行例
docker run --rm -p 38080:8080 -v /:/var/www/html/plugins-enabled/ adminer:4.7


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

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

Dockerでpython3.7とpython-pptxをインストールしたコンテナ(Alpine3.9ベース)を作成する

python-pptxを使用して、パワーポイントファイルの読み取りや生成・編集などを行うことができます。

以下のコマンドとDockerfileを使用してpython3.7とpython-pptxがインストールされたイメージを作成する事ができます。
docker build -t pythonpptx:1.0 .

Dockerfile
FROM python:3.7-alpine3.9
RUN apk --no-cache add libstdc++ \
    libxml2 \
    libxslt \
    libjpeg-turbo \
  && apk --no-cache --virtual pydeps add gcc \
    g++ \
    python3-dev \
    musl-dev \
    cython \
    libxml2-dev \
    libxslt-dev \
    jpeg-dev \
    zlib-dev \
  && pip install pillow \
  && pip install python-pptx \
  && apk del --purge pydeps
CMD ["/bin/sh"]

適当なエクセルファイルtest1.pptxを準備して、以下のコマンドでサンプルコードを実行してパワーポイントファイルの内容にアクセスできます。
docker run -v `pwd`:/tmp --rm -it pythonpptx:1.0 /usr/local/bin/python3 /tmp/test.py

test.py
import pptx

prs = pptx.Presentation("/tmp/test1.pptx")
text = []
for slide in prs.slides:
  for shape in slide.shapes:
    text.append(shape.text)
print('\n'.join(text))

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

tempsはシンプルな天気アプリケーションです。

〇tempsの画面


〇構築方法
以下のVagrantfileを使用して、temps、Gnome Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96gnometemps"
config.vm.network "public_network", ip:"192.168.1.103", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96gnometemps"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export 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

apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.22/VBoxGuestAdditions_5.2.22.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.22.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 | 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 Temps
cd /opt
apt-get -y install gconf2 libcanberra-gtk-module libcanberra-gtk3-module
wget https://github.com/jackd248/temps/releases/download/v0.7.0/Temps-linux-x64.zip
unzip Temps-linux-x64.zip
cat << EOF > /usr/share/applications/temps.desktop
[Desktop Entry]
Type=Application
Version=1.0
Name=Temps
Exec=/opt/Temps-linux-x64/Temps
Categories=Utility;
EOF

init 5
SHELL
end

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

FromScratchは、自動的に書いた内容が自動的に保存されるメモ書きアプリケーションです。

〇FromScratchの画面


〇構築方法
以下のVagrantfileを使用して、FromScratch、KDE Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96kdefromscratch"
config.vm.network "public_network", ip:"192.168.1.109", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96kdefromscratch"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  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 gawk
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=mozc:True,fcitx-keyboard-jp:False,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-kde-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

# install FromScratch
apt-get -y install gconf2 libappindicator1 libdbusmenu-glib4 libdbusmenu-gtk4 libindicator7 psmisc
wget https://github.com/Kilian/fromscratch/releases/download/v1.4.3/FromScratch_1.4.3_amd64.deb
dpkg -i FromScratch_1.4.3_amd64.deb

init 5
SHELL
end


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

Dockerでpython3.7とPillowをインストールしたコンテナ(Alpine3.9ベース)を作成する

Pillowを使用して、画像の生成や変換などを行うことができます。

以下のコマンドとDockerfileを使用してpython3.7とPillowがインストールされたイメージを作成する事ができます。
docker build -t pythonpillow:1.0 .

Dockerfile
FROM python:3.7-alpine3.9
RUN apk --no-cache add \
    libjpeg-turbo \
  && apk --no-cache --virtual pydeps add gcc \
    g++ \
    python3-dev \
    musl-dev \
    cython \
    jpeg-dev \
    zlib-dev \
  && pip install pillow \
  && apk del --purge pydeps

以下のコマンドでサンプルコードを実行して、読み込んだ画像をセピア調に変換します。
docker run -v `pwd`:/tmp --rm -it pythonpillow:1.0 /usr/local/bin/python3 /tmp/test.py

test.py
# coding=UTF-8
from PIL import Image
from PIL import ImageOps

# 画像をセピア調に変換する
img1 = Image.open("/tmp/sf2.jpg")
for ly in range(img1.size[1]):
        for lx in range(img1.size[0]):
                pv = img1.getpixel((lx, ly))
                pv2 = (pv[0]+pv[1]+pv[2])/3
                pr = int(pv2 *0xd0/0xff)
                pg = int(pv2 *0xa0/0xff)
                pb = int(pv2 *0x50/0xff)
                img1.putpixel((lx,ly), (pr,pg,pb))
img1.save("/tmp/pythonpillow.png")

入力画像(sf2.jpg)


出力画像(pythonpillow.png)


2019年5月24日金曜日

VagrantでBlender、Xfce Desktop環境、XRDPがインストールされた仮想マシン(Ubuntu18.04)を構築する

Blenderはオープンソースの3D CG作成ソフトウェアです。

〇Blenderの画面


〇構築方法
以下のVagrantfileを使用して、Blender、Xfce Desktop環境、XRDPをインストールした仮想マシン(Ubuntu18.04)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/ubuntu-18.04"
  config.vm.hostname = "ub1804xfceblender"
config.vm.network :public_network, ip:"192.168.1.109"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "ub1804xfceblender"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install language-pack-ja
localectl set-locale LANG=ja_JP.UTF-8
localectl set-keymap jp106
apt-get update
apt-get -y install xrdp=0.9.5-2 fcitx-mozc xubuntu-desktop
im-config -n fcitx

apt-get -y install --install-recommends linux-generic-hwe-18.04 xserver-xorg-hwe-18.04
apt-get -y install virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11

sed -i -e "s/allowed_users=console/allowed_users=anybody/" /etc/X11/Xwrapper.config

echo "xfce4-session" > /home/vagrant/.xsession
apt-get -y purge light-locker

# install Blender
cd /opt
wget https://download.blender.org/release/Blender2.79/blender-2.79b-linux-glibc219-x86_64.tar.bz2
tar jxvf blender-2.79b-linux-glibc219-x86_64.tar.bz2
cat << EOF > /usr/share/applications/blender.desktop
[Desktop Entry]
Type=Application
Version=1.0
Name=Blender
Icon=/opt/blender-2.79b-linux-glibc219-x86_64/blender.svg
Exec=/opt/blender-2.79b-linux-glibc219-x86_64/blender
Categories=Graphics;
EOF

init 5
SHELL
end


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

VagrantでProjectLibre1.9.1とAdoptOpenJDK11、Xfce Desktop環境、XRDPがインストールされた仮想マシン(Debian Stretch/9.6)を構築する

ProjectLibre を使用してMicrosoft Projectのようにプロジェクト管理を行う事ができます。

〇ProjectLibreの画面


構築方法

以下のVagrantfileを使用して、ProjectLibre1.9.1とAdoptOpenJDK11 、Xfce Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6) を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はVagrant、パスワードもVagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96xfceprojectlibre"
config.vm.network "public_network", ip:"192.168.1.106", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96xfceprojectlibre"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install task-japanese gawk
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
#startxfce4 &
EOF
chown vagrant:vagrant .xsessionrc

apt-get -y install  xrdp fcitx-mozc task-xfce-desktop tigervnc-standalone-server
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 AdoptOpenJDK11
cd /opt
wget https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.3%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.3_7.tar.gz
tar xvfz OpenJDK11U-jdk_x64_linux_hotspot_11.0.3_7.tar.gz
cat << EOF > /etc/profile.d/jdk.sh
export JAVA_HOME=/opt/jdk-11.0.3+7
export PATH=\\$PATH:\\$JAVA_HOME/bin
EOF

# install projectlibre
mkdir -p /opt/projectlibre
cd /opt/projectlibre
wget https://sourceforge.net/projects/projectlibre/files/ProjectLibre/1.9.1/projectlibre.jar
cat << EOF > /usr/share/applications/projectlibre.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Environment=QT_IM_MODULE=fcitx
Exec=/opt/jdk-11.0.3+7/bin/java -jar /opt/projectlibre/projectlibre.jar
Name=ProjectLibre
Categories=Development;
EOF

init 5
SHELL
end

関連情報

・プロジェクトWebサイト
https://www.projectlibre.com/

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

DockerでDebian 11(Bullseye)のXfceデスクトップ環境にリモートデスクトップで接続できるコンテナを作成する

Dockerでpython3.7とpython-docxをインストールしたコンテナ(Alpine3.9ベース)を作成する

python-docxを使用して、ワードファイルの読み取りや生成・編集などを行うことができます。

以下のコマンドとDockerfileを使用してpython3.7とpython-docxがインストールされたイメージを作成する事ができます。
docker build -t pythondocx:1.0 .
Dockerfile
FROM python:3.7-alpine3.9
FROM python:3.7-alpine3.9
RUN apk --no-cache add libstdc++ \
    libxml2 \
    libxslt \
  && apk --no-cache --virtual pydeps add gcc \
    g++ \
    python3-dev \
    musl-dev \
    cython \
    libxml2-dev \
    libxslt-dev \
  && pip install python-docx \
  && apk del --purge pydeps
CMD ["/bin/sh"]

適当なエクセルファイルtest1.docxを準備して、以下のコマンドでサンプルコードを実行してワードファイルの内容にアクセスできます。
docker run -v `pwd`:/tmp --rm -it pythondocx:1.0 /usr/local/bin/python3 /tmp/test.py

test.py
import docx

doc = docx.Document("/tmp/test1.docx")
text = []
for para in doc.paragraphs:
  text.append(para.text)
print('\n'.join(text))

Raspberry Pi(Raspbian Stretch)にSpeedCrunchをインストールする

SpeedCrunchは、高精度の科学用関数電卓です。

〇SpeedCrunchの画面


〇インストール方法
シェルから以下のコマンド実行します
sudo apt-get -y install speedcrunch


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

2019年5月23日木曜日

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

darktableはオープンソースの写真管理・編集ソフトウェアです。

〇darktableの画面


〇構築方法
以下のVagrantfileを使用して、darktable、Cinnamon Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96cinnamondarktable"
config.vm.network "public_network", ip:"192.168.1.107", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96cinnamondarktable"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade
apt-get -y install task-japanese gawk
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-cinnamon-desktop tigervnc-standalone-server

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

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 darktable
apt-get -y install darktable

init 5
SHELL
end


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

・darktableのgithubリポジトリ
https://github.com/darktable-org/darktable

DockerでRobocodeとXfceデスクトップ環境がインストールされたイメージ(Ubuntu18.04)を作成する

Robocodeは、プログラムでコントロールする戦車が戦うゲームです。Javaや.netを使用するプログラム言語を学ぶことができます。

〇Robocodeの画面

Remote Desktop Clientから接続するときにユーザ名/パスワードにubuntu/ubuntuを指定します。

イメージのビルド

以下のコマンドを実行して、イメージをビルドします。
docker build -t ub1804xfcerobocode .

Dockerfile
from ubuntu:18.04

run apt-get update \
  && apt-get install -y language-pack-ja-base language-pack-ja \
  && ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && echo 'Asia/Tokyo' > /etc/timezone \
  && locale-gen ja_JP.UTF-8 \
  && echo 'LC_ALL=ja_JP.UTF-8' > /etc/default/locale \
  && echo 'LANG=ja_JP.UTF-8' >> /etc/default/locale
env LANG=ja_JP.UTF-8 \
   LANGUAGE=ja_JP.UTF-8 \
   LC_ALL=ja_JP.UTF-8
run DEBIAN_FRONTEND=noninteractive apt-get -y install \
      xubuntu-desktop \
      xrdp=0.9.5-2 \
      fcitx-mozc \
      fonts-ipafont-gothic \
      fonts-ipafont-mincho \
      vim \
      gvfs-bin \
      xdg-utils \
      openjdk-11-jdk \
  && mkdir -p /opt/robocode \
  && cd /opt/robocode \
  && wget 'https://sourceforge.net/projects/robocode/files/robocode/1.9.3.4/robocode-1.9.3.4-setup.jar' \
  && jar xvf robocode-1.9.3.4-setup.jar \
  && chmod +x /opt/robocode/robocode.sh \
  && echo '[Desktop Entry]'  > /usr/share/applications/robocode.desktop \
  && echo 'Type=Application'  >> /usr/share/applications/robocode.desktop \
  && echo 'Version=1.0'  >> /usr/share/applications/robocode.desktop \
  && echo 'Name=Robocode'  >> /usr/share/applications/robocode.desktop \
  && echo 'GenericName=Tank AI programming game for Java and .NET' >> /usr/share/applications/robocode.desktop \
  && echo 'Comment=Build the best - destroy the rest!' >> /usr/share/applications/robocode.desktop \
  && echo 'Icon=/opt/robocode/desktop/robocode.png' >> /usr/share/applications/robocode.desktop \
  && echo 'Exec=/opt/robocode/robocode.sh' >> /usr/share/applications/robocode.desktop \
  && echo 'Categories=Game;StrategyGame;' >> /usr/share/applications/robocode.desktop \
  && im-config -n fcitx \
  && apt-get clean \
  && rm -rf /var/cache/apt/archives/* \
  && rm -rf /var/lib/apt/lists/* \
  && groupadd -g 1000 ubuntu \
  && useradd -d /home/ubuntu -m -s /bin/bash -u 1000 -g 1000 ubuntu \
  && echo 'ubuntu:ubuntu' | chpasswd \
  && echo "ubuntu ALL=NOPASSWD: ALL" >> /etc/sudoers \
  && echo 'sed -i -e "s/^EnabledIMList.*$/EnabledIMList=fcitx-keyboard-jp:True,mozc:True,fcitx-keyboard-us:False/" /home/ubuntu/.config/fcitx/profile' >> /home/ubuntu/.xsessionrc \
  && chown ubuntu:ubuntu /home/ubuntu/.xsessionrc \
  && echo 'xfce4-session' >> /home/ubuntu/.xsession \
  && mkdir /home/ubuntu/data \
  && chown -R ubuntu:ubuntu /home/ubuntu/data \
  && echo '#!/bin/bash' > /start.sh \
  && echo 'export GTK_IM_MODULE=fcitx' > /start.sh \
  && echo 'export QT_IM_MODULE=fcitx' >> /start.sh \
  && echo 'export XMODIFIERS="@im=fcitx"' >> /start.sh \
  && echo 'startxfce4' >> /start.sh \
  && echo 'sudo /etc/init.d/xrdp start' >> /start.sh \
  && echo 'sudo /etc/init.d/dbus start' >> /start.sh \
  && echo 'fcitx -r -d &' >> /start.sh \
  && echo '/bin/bash' >> /start.sh \
  && chmod +x /start.sh

expose 3389
volume ["/home/ubuntu/data"]
cmd /start.sh

コンテナの実行

以下のコマンドでコンテナを実行します。
docker run -it -v `pwd`:/home/ubuntu/work -p 3389:3389 -u ubuntu ub1804xfcerobocode

関連情報

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

・Robocodeのホームページ
https://robocode.sourceforge.io/

・ゲームに関する記事一覧は、こちらを参照してください。

2019年5月22日水曜日

Dockerでpython3.7とgraphvizをインストールしたコンテナ(Alpine3.9ベース)を作成する

pythonとgraphvizを使用して、フロー図などをのグラフを描画する事ができます。

〇graphvizの出力画像


〇graphvizがインストールされたイメージの作成方法
1.以下のDockerfileとコマンドでpython3.7とgraphvizがインストールされたコンテナを作成します。
docker build -t py37graphviz:1.0 .

Dockerfile
FROM python:3.7-alpine3.9
RUN mkdir -p /usr/share/fonts \
  && cd /usr/share/fonts \
  && wget https://ipafont.ipa.go.jp/old/ipafont/IPAfont00303.php -O IPAfont00303.zip \
  && unzip IPAfont00303.zip \
  && rm IPAfont00303.zip \
  && apk --no-cache add libstdc++ \
    graphviz \
    fontconfig \
  && fc-cache -fv \
  && apk --no-cache --virtual pydeps add gcc \
    g++ \
    python3-dev \
    musl-dev \
    cython \
  && pip install graphviz \
  && apk del --purge pydeps
CMD ["/bin/sh"]

2.コンテナ内でサンプルコードtest1.pyからgraphvizを使用して画像を生成できます。
実行するコマンド:
docker run -v `pwd`:/tmp --rm -it py37graphviz:1.0 /usr/local/bin/python3 /tmp/test1.py

test1.py
# -*- coding: utf-8 -*-
from graphviz import Digraph

dot = Digraph(format='png')
# フォント設定
dot.attr('node', fontname="MS Gothic")
# ノード作成
dot.node("項目1")
dot.node("項目2")
dot.node("項目3")
dot.node("項目4")
# エッジ作成
dot.edge("項目1", "項目2")
dot.edge("項目2", "項目3")
dot.edge("項目2", "項目4")
dot.render("test1", directory="/tmp")

〇関連情報
PythonとGraphvizに関する記事はこちら(http://kyle-in-jp.blogspot.com/search/label/PythonGraphviz)を参照してください。

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

Synapseはランチャーアプリケーションです。

〇Synapseの画面


〇構築方法
以下のVagrantfileを使用して、Synapse、LXDE Desktop環境、XRDPをインストールした仮想マシン(Debian Stretch/9.6)を構築できます。
XRDPがインストールされているので、Windowsのリモートデスクトップで接続することができます。ユーザ名はvagrant、パスワードもvagrantでログオンできます。

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "bento/debian-9.6"
  config.vm.hostname = "db96lxdesynapse"
config.vm.network "public_network", ip:"192.168.1.103", :netmask => "255.255.255.0"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "db96lxdesynapse"
     vbox.gui = true
     vbox.cpus = 2
     vbox.memory = 2048
  end
  config.vm.provision "shell", inline: <<-SHELL
apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

apt-get -y install task-japanese gawk
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/.xsession
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
lxsession -s LXDE -e LXDE
EOF
chown vagrant:vagrant .xsession


apt-get -y install  xrdp fcitx-mozc task-lxde-desktop tigervnc-standalone-server fcitx-tools


apt-get -y install build-essential module-assistant dkms
wget http://download.virtualbox.org/virtualbox/5.2.22/VBoxGuestAdditions_5.2.22.iso
mount -o loop -t iso9660 VBoxGuestAdditions_5.2.22.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

# install Synapse
apt-get -y install synapse

init 5
SHELL
end


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