Docker Hub にイメージを上げるまで (1)
2021/05/13
2021/05/17
昔、一人で開発していたOSSのBug Tracking System の Starbug1というものがあります。
自分で作ったから仕事のプロジェクトでは使い続けてるけど、そうじゃない他の利用者は、別のプロジェクト管理システムに移行してるだろうなとは思う。まだ使ってる人が居たら嬉しいので教えてほしい。
C言語で作られたCGIアプリケーションなので、意外と環境を作るのが面倒だった
ふと、Docker Hub に starbug1のイメージを置いておけば、dockerでビルドして起動するだけなんじゃないかと思い、Docker HubへのDockerイメージの公開をしてみようと思いました。Docker Hubでイメージを公開するのも試せるし。
Docker Hub 公開までの流れ
調べたところ、Docker Hubに直接イメージをアップロードすることもできるけど、Githubと連携することも可能らしい。 後々のことも考えればGithubと連携する方がよさそう。
- Dockerfileを用意する。
- Githubのリポジトリにpushする。
- Docker Hubで、Githubと連携する。
まずは、ローカルでDockerfileを用意する。
いろいろ試行錯誤した結果、下のファイルを用意した。
- Dockerfile
FROM ubuntu:16.04 as builder RUN apt-get update && apt-get upgrade -y && \ apt-get install -y language-pack-ja wget build-essential tcl-dev \ gettext libjson-perl libsqlite3-dev liblocale-po-perl rsync RUN cd /tmp && \ wget --trust-server-names http://repository.timesys.com/buildsources/l/libcgic/libcgic-205/cgic205.tar.gz && \ tar zxf cgic205.tar.gz && \ cd cgic205 && \ make && \ make install && \ cd .. && \ wget --trust-server-names https://ja.osdn.net/dl/starbug1/starbug1-1.6.01.tar.gz && \ tar zxf starbug1-1.6.01.tar.gz && \ cd starbug1-1.6.01 && \ # bugfix. sql statement sed -i -e 's/m\.m\./m\./' db_project.c && \ make INITIAL_LOCALE=ja_JP webapp FROM debian:sid-slim ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_PID_FILE /var/run/apache2.pid ENV APACHE_RUN_DIR /var/run/apache2 ENV APACHE_LOG_DIR /var/log/apache2 ENV APACHE_LOCK_DIR /var/lock/apache2 RUN apt-get update && apt-get upgrade -y && \ apt-get install -y locales apache2 \ gettext libjson-perl liblocale-po-perl && \ apt-get clean && rm -rf /var/lib/apt/lists/* RUN sed -i -E 's/# (ja_JP.UTF-8)/\1/' /etc/locale.gen && \ locale-gen &&\ update-locale LANG=ja_JP.UTF-8 COPY --from=builder /tmp/starbug1-1.6.01/dist/starbug1/ /var/www/html/ RUN chown -R www-data:www-data /var/www/html RUN sed -i -e 's/Options Indexes FollowSymLinks/Options Indexes FollowSymLinks ExecCGI\n\tDirectoryIndex index.cgi/g' /etc/apache2/apache2.conf RUN sed -i -e 's/#AddHandler cgi-script .cgi/AddHandler cgi-script .cgi/g' /etc/apache2/mods-available/mime.conf RUN a2enmod cgid EXPOSE 80 CMD ["apachectl", "-D", "FOREGROUND"] |
試行錯誤した点
- コンパイルに難の少なそうな、少し古めのubuntuをビルド用イメージとして使用
- 最終的なイメージのサイズを抑えるため、マルチステージビルドで。実行用のイメージは、debian:sid-slimを使用
- 利用していた C のCGIライブラリの提供サイトが消えていた。md5sumの値を確認した上で、別のサイトからダウンロードするようにした。
- starbug1 に、バグがあったのをadhocに修正した。(会社で動いてるもののソースコードと同じなんだけどな。。。謎)
実行方法
ビルド
docker build -t starbug1 . |
実行
docker run --rm --name starbug1 -v $(pwd)/db:/var/www/html/db -p 8000:80 -d starbug1 |
カレントディレクトリのdbというディレクトリをマウントしています。ここにsqlite3のデータベースが保存されるので、バックアップ等は、このディレクトリ丸ごとバックアップすればOK
ブラウザで http://localhost:8000/ を開けば、starbug1が動きます。
停止
docker stop starbug1 |
Github にpush
続く
starbug1使わせていただいておりますのでご報告。
元々前担当者が影舞を使用していたところからの移行なのですが、 今では電話サポート等の問い合わせ管理として生き延びてます。 まだまだ使い続ける予定です。
starbug1を使って役立てていただいているとのことで、非常に嬉しいです。ご連絡ありがとうございます。 コメントに気が付くのが遅れてすいません..