2016年8月16日火曜日

flaskでhello worldを行うDockerコンテナを作成する

flaskでhello worldを行うDockerコンテナを作成するには、以下のDockerfileを使用します。

使用するDockerfile
FROM ubuntu:16.04

RUN locale-gen ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:en
ENV LC_ALL ja_JP.UTF-8

RUN apt-get update \
  && apt-get -y install python-pip \
  && pip install --upgrade Flask

CMD "/bin/bash"

以下のコマンドでコンテナの作成を行う。
docker build -t ub1604flask .

以下のコマンドでコンテナの実行を行う。
docker run -v `pwd`/dat:/dat -p 5000:5000 --rm -it ub1604flask python /dat/app.py

dat/app.py
from flask import Flask
app = Flask(__name__)

@app.route("/")
def index():
    return "Hello World!"

if __name__ == "__main__":
    app.run(host='0.0.0.0')

ブラウザからはホストのIPアドレス:5000でアクセスする。

2016年8月14日日曜日

pyvboxで実行している仮想マシン名を列挙する

pyvboxで実行している仮想マシン名を列挙するには、以下のコードのようにstateを使用します。

import virtualbox

for vm in virtualbox.VirtualBox().machines:
  if vm.state == virtualbox.pool.MachineState.first_online or vm.state == virtualbox.pool.MachineState.last_online:
    print vm.name

2016年5月25日水曜日

Vagrantを使用してCentOS7上でGnome DesktopとXRDPがインストールされた仮想マシン(CentOS7)を作成する

Vagrantを使用してCentOS7上でGnome DesktopとXRDPがインストールされた仮想マシンを作成するには、以下のVagrantfileを使用します。

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos/7"
  config.vm.hostname = "centos7gui"
  config.vm.network :public_network, ip:"192.168.1.11"
  config.vm.synced_folder ".", "/home/vagrant/sync", disabled: true
  config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
  config.vm.provider :virtualbox do |vbox|
     vbox.name = "centos7gui"
     vbox.gui = true
  end
  config.vm.provision "shell", inline: <<-SHELL
yum -y install wget

# GUIに関連するパッケージをインストール
sudo yum -y groupinstall "Server with GUI"
# 不要なダイアログを表示されないようにする
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

sudo systemctl set-default graphical.target

# 日本語のロケールを設定
sudo yum -y install ibus-kkc vlgothic-*
localectl set-locale LANG=ja_JP.UTF-8

# XRDPをインストールして、リモートデスクトップでログインできるようにする。
sudo yum -y install epel-release
sudo yum -y install xrdp
sudo yum -y install tigervnc-server

sudo chcon -t bin_t /usr/sbin/xrdp
sudo chcon -t bin_t /usr/sbin/xrdp-sesman
sudo sed -i "s/max_bpp=32/max_bpp=24/" /etc/xrdp/xrdp.ini 
systemctl start xrdp.service
systemctl enable xrdp.service


telinit 5
SHELL

end

2016年1月4日月曜日

psycopg2を使用してクエリー結果をカラム名でアクセスする

psycopg2を使用してクエリー結果をカラム名でアクセスするには、以下のコードのようにpsycopg2.extrasのDictCursorを使用します。

import psycopg2
import psycopg2.extras

try:
    cnn = psycopg2.connect("dbname=yourdb host=yourhost user=you password=yourpass")
    cur = cnn.cursor(cursor_factory=psycopg2.extras.DictCursor)

    cur.execute("""
      select ... from ...
    """)
    rows = cur.fetchall()
    for row in rows:
        print row['column_name']

    cur.close()
    cnn.close()

except (psycopg2.OperationalError) as e:
    print (e)

※参考
http://initd.org/psycopg/docs/extras.html


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

2015年12月6日日曜日

pyvboxでVirtualBoxの仮想マシンを起動する

pyvboxでVirtualBoxの仮想マシンを起動するには、以下のコードを実行します。

import virtualbox

vmname = 'samplevm'
session = virtualbox.Session()
vm = virtualbox.VirtualBox().find_machine(vmname)
progress = vm.launch_vm_process(session, 'gui', '')
progress.wait_for_completion(-1)

○関連情報
pyvboxのドキュメントpyvbox 0.2.2 documentation

2015年11月30日月曜日

pyvboxでVirtualBoxの仮想マシンの名前・OSタイプ・CPU数・メモリサイズを取得する

pyvboxでVirtualBoxの仮想マシンの名前・OSタイプ・CPU数・メモリサイズを取得するには、以下のコードを実行します。

import virtualbox

for vm in virtualbox.VirtualBox().machines:
  print "Name:" + vm.name
  print "OS Type ID:" + vm.os_type_id
  print "CPU Count:" + str(vm.cpu_count)
  print "Memory Size:" + str(vm.memory_size)
  print "VRAM Size:" + str(vm.vram_size)
  print "----"

○pyvboxのインストール(Ubuntuなど)
sudo apt-get install python-pip
sudo pip install pyvbox


○関連情報
pyvboxのドキュメントpyvbox 0.2.2 documentation

2014年11月8日土曜日

DockerfileでApache2を起動するイメージを作成する

DockerでApache2を起動するイメージを作成するには、以下のようなDockerfileを使用します。
htmlなどのコンテンツはwwwサブディレクトリに配置します。

サンプルDockerfile
FROM ubuntu:latest

MAINTAINER kyle

RUN apt-get update
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install apache2

ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid

EXPOSE 80

ADD www /var/www/html

CMD ["/usr/sbin/apache2ctl", "-DFOREGROUND"]