Dockerでいろいろ実験するときに便利かも。
まずはこれから使いそうなポートをいくつか開けたbusyboxを立ち上げる。
この例では80(http), 443(https), 4567(sinatra), 9292(rackup), 6379(redis)を開けている。
名前は打ちやすいようにbbにしておく。
docker run --name bb -d -t -p 80:80 -p 443:443 -p 4567:4567 -p 9292:9292 -p 6379:6379 busybox
redisを立ち上げる例。名前はrdと短くしておく。
データはカレントディレクトリのv/rdに置くルールにする。
docker run --name rd -d --net container:bb -v $PWD/v/rd:/data redis redis-server --appendonly yes
nginxを立ち上げる例。
docker run --name nx -d --net container:bb nginx
うまく動かないときはリスタート。
docker restart nx
設定ファイルなどのありかを検索。
docker export nx | tar t | grep nginx
設定ファイルを入手。
docker export nx | tar x etc/nginx
自分の運用ルールに合わせてファイルを移動。
sudo mv etc/nginx v/nx
rm -fr etc
設定を好きなように変更する。
vi v/nx/conf.d/default.conf
設定を有効にするためにリスタート。
docker stop nx
docker rm nx
docker run --name nx -d --net container:bb -v $PWD/v/nx:/etc/nginx nginx
Ubuntuを立ち上げて、rubyとかいろいろ入れてsinatraアプリを書いたりしてもよい。
docker run --name st --net container:bb -it ubuntu
apt-get install -y ruby curl
gem install sinatra
cat > test.rb
get '/' do
'hello world'
end
^D
ruby -rsinatra test.rb -o 0.0.0.0 &
curl localhost:4567
nginxからsinatraアプリへリバースプロキシを設定、みたいな手順。
diffやexportを使って、変更箇所を整理してDockerfileに仕立てれば完成。
docker diff st
docker export st | tar t