LoginSignup
0
0

More than 1 year has passed since last update.

docker公式Alpine Linuxイメージを使ってmini_httpdでCGIを動かす

Last updated at Posted at 2021-05-13

環境

Dockerホスト - Alpine Linux 3.13.5
#ESXi上に組みましたが、本質的にUbuntuでも何でも変わらないです。ちなみにメモリ384MB、HDD8GBです
Dckerバージョン - 20.10.6
Dockerイメージ - alpine:3.13.5
mini_httpd - 1.30-r1

操作

Dockerホストでの操作

Dockerのインストール

dockerイメージのあるリポジトリを有効にします。

/etc/apk
host:~#vi repositories
#/media/cdrom/apks
http://dl-cdn.alpinelinux.org/alpine/v3.13/main
#http://dl-cdn.alpinelinux.org/alpine/v3.13/community
#http://dl-cdn.alpinelinux.org/alpine/edge/main
http://dl-cdn.alpinelinux.org/alpine/edge/community  <== '#'を削る
http://dl-cdn.alpinelinux.org/alpine/edge/testing    <== '#'を削る

で、いつものおまじない。

host:~# apk update
host:~# apk upgrade

そしてDockerをインストールします。

host:~# apk add docker
host:~# rc-update add docker boot
host:~# service docker start

再起動したら動作確認します。

host:~# docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

と出ればok。「dockerサービスが動いてないよ」というエラーが出たらrebootしてみてください。
で、サクッとalpineなコンテナを作って中に入ります。

host:~# docker container run -dit --name miniweb --hostname miniweb alpine:3.13.5 tail -f /dev/null
host:~# docker container exec -it miniweb /bin/ash

"miniweb"部分は適当に変えてください。

Dockerイメージでの操作

いつものおまじない。

miniweb:~# apk update
miniweb:~# apk upgrade

そしてopenRCとmini_httpdをインストールします。

miniweb:~# apk add openrc
miniweb:~# mkdir /run/openrc
miniweb:~# touch /run/openrc/softlevel
miniweb:~# apk add mini_httpd

mini_httpdの設定ファイルを修正します。最低限必要なのはこれだけ。

/etc/mini_httpd
miniweb:~# vi mini_httpd.conf
port=80
user=minihttpd
data=/var/www/localhost/htdocs
cgipat=**.sh|**.cgi
nochroot
logfile=/var/log/mini_httpd/mini_httpd.log

適当にwebコンテンツを作ります。

/var/www/localhost/htdocs
miniweb:~#vi index.cgi
#!/bin/sh
echo "Content-type: text/html"
echo ""
set

miniweb:~# chmod +x index.cgi

mini_httpdを起動サービスに登録します。

miniweb:~# rc-update add mini_httpd boot
miniweb:~# rc-service mini_httpd start
miniweb:~# reboot

以上。
どっかからcurlででも試してみてください。

host:~# apk add curl
host:~# curl 172.17.0.2
...
(環境変数の一覧が出てきます)
...

補足

最後の curl で「httpdがあがってない」エラーが出るときは mini_httpd サービスが起動していません。
手動で起動してみてください。

host:~# docker exec -it miniweb /bin/ash
miniweb:~# rc boot
miniweb~#:rc-satus
Runlevel: boot
 mini_httpd
...

'rc-service'や'rc-update'だと「もう起動してるよ」とエラーになります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0