Dockerでubuntu 12.04 LTS + apache
Dockerでももんが家計簿の続き。
ruby1.8を動かしたいのでubuntu 12.04 LTSをベースとする。apache2.2とruby1.8を入れてapacheを起動する。
がapacheを起動するところで悩む。apacheをフォアグラウンドで動かすのがセオリーのようだがぐぐるといろいろな方法が出てくる。色々試すがうまくいかない。bashを起動し、apache2ctl startすれば正常に起動するが、apche2ctl -D FORGROUNDだと以下のエラーログを履いて、CGIが動かない。
Couldn't bind unix domain socket /var/run/apache2/cgis\
ock.6
よくよく試すとapache2ctl startだと起動時に/var/run/apache2フォルダが作られているが、-D FORGROUNDだと作られていない。なのでしょうがないのでDockerfileでイメージを作るときに/var/run/apache2フォルダを作ることで回避に成功。
やっとももんが家計簿が動き出した。家計簿データは永続データなので起動時に-vパラメータを付けてホストOSのファイルをクライアントOS側にマウントすることとする。これで難なく過去データの引き継ぎもできる。作戦通り。
とりあえずDockerfileを貼っておく。
# ubuntu 12.04 + apache + ruby1.8 + momonga
FROM ubuntu:12.04
RUN apt-get update && apt-get install -y apache2 ruby1.8
COPY mobo/ /var/www/
COPY htpasswd /etc/apache2/
COPY momonga /etc/apache2/sites-available/
RUN ["rm","/etc/apache2/sites-enabled/000-default"]
RUN ["ln","-s","/etc/apache2/sites-available/momonga","/etc/apache2/sites-enabled/001-momonga"]
RUN ["mkdir","/var/mobo"]
RUN ["mkdir","/var/run/apache2"]
EXPOSE 80
CMD ["apache2ctl","-D","FOREGROUND"]
コメント