Dockerでvolumeの権限が変わる

Dockerでデータベースのデータを消えないようにホスト側へマウントして使おうとdocker-compose.ymlを用意

$ vim docker-compose.yml

version: '2'                                                                                                                                                                                                 
services:                                                                       
  web:                                                                          
    build: containers/web                                                       
    ports:                                                                      
      - "10080:80"                                                              
    volumes:                                                                    
      - ./www:/var/www/html                                                     
    depends_on:                                                                 
      - db                                                                      
  db:                                                                           
    build: containers/mysql                                                     
    volumes:                                                                    
      - "./datastore/mysql:/var/lib/mysql"  

$ docker-compose build
$ docker-compose up

マウントしていたディレクトリをホスト側で確認してみたら

$ ls -al /datastore/mysql

total 176160
drwxrwxr-x 5 newrelic newrelic     4096  5月  7 12:45 .
-rw-rw---- 1 newrelic newrelic       56  5月  6 16:49 auto.cnf
drwx------ 2 newrelic newrelic    12288  5月  6 19:32 database
-rw-rw---- 1 newrelic newrelic 79691776  5月  7 12:46 ibdata1
-rw-rw---- 1 newrelic newrelic 50331648  5月  7 12:46 ib_logfile0
-rw-rw---- 1 newrelic newrelic 50331648  5月  6 16:49 ib_logfile1
drwx------ 2 newrelic newrelic     4096  5月  6 16:49 mysql
drwx------ 2 newrelic newrelic     4096  5月  6 16:49 performance_schema

と、勝手にownerがnewrelicに!なんでだ、と思って権限を確認してみたら

ホスト側
$ cat /etc/passwd

newrelic:x:999:999:New Relic daemons:/opt/newrelic:/bin/false

コンテナの中
$ cat /etc/passwd

mysql:x:999:999::/home/mysql:/bin/sh

おそらくUIDで判断してるんだと..
データボリュームってのを使うとよさそうです
また今度試します

参考:
Manage data in containers

OperaをUbuntu 14.04にインストールする

Oparaを入れるとfreeでVPNが使えるようになるだって、ということでUbuntu 14.04にOperaを入れてみました

記事: Opera just added a free VPN to its browser for anonymous internet access | The Verge

今だとdeveloper版で使えるそうなのでダウンロード

ウェブ開発者 | Opera

debファイルがダウンロードできたらインストール

$ dpkg -i opera-developer_38.0.2205.0_amd64.deb

インストール途中にリポジトリを登録するかどうか選べます
登録しておけば次からはaptでアップロードできます

DashメニューからOpera developerを起動

opera-developer

上のメニューからPreferenceを選んで、設定メニューを開いてVPNをONにします
そうしたらアドレスバーにVPNが表示されるのでクリックすると、経由場所が選べます

google.comにアクセスすると、co.jpにリダイレクトされずに

opera-developer2

と表示されます
すばらしいですね

wgetコマンドでウェブサイトの画像をダウンロードする

自分で管理しているサイトの画像をすべて取りたかったのでwgetコマンドでやってみました
Basic認証をかけていたので、ユーザー名とパスワードを渡しています

$ wget -r -l 1 –user=test –password=test -A “*.png” http://sample.com

testとhttp://sample.comは変更して使ってください

Rubyでスクレイピングするとたまに失敗する

RubyでNokogiriを使ってウェブサイトをスクレイピングしているとたまに要素がないってエラーが..
おそらくHTMLのレスポンスが来る前に動いているようなので対策してみました

のGemを使うことにしました

事前準備といてGoogle Chrome と chrome driverを入れました

$ sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
$ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
$ sudo apt-get update
$ sudo apt-get install google-chrome-stable

$ sudo apt-get install unzip xvfb

googleのwebdriverのzipをダウンロード
Downloads – ChromeDriver – WebDriver for Chrome

unzipして使えるようします

$ chmod +x chromedriver
$ sudo chromedriver /usr/local/share
$ sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
$ sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver

google chrome をインストール

$ sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
$ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
$ sudo apt-get update
$ sudo apt-get install google-chrome-stable

あとはRubyを書きます

Gemfile

source "https://rubygems.org"

gem "nokogiri"
gem "hipchat"
gem "slack-api"
gem "watir"
gem "watir-webdriver"
gem "headless"

sample.rb

require 'open-uri'
require 'nokogiri'
require 'watir'
require 'watir-webdriver'
require 'headless'

url = 'http://google.co.jp'

headless = Headless.new
headless.start
browser = Watir::Browser.new :chrome

browser.goto url
doc = Nokogiri::HTML.parse(browser.html)
p doc.xpath('//div[@class="sample"]/a')[0].text

browser.close
headless.destroy

$ bundle install
して
$ ruby sample.rb

といった感じでできました