Last active
July 1, 2019 04:44
-
-
Save u1and0/dbf7c8f7c46b4a03aa584bd1623b796f to your computer and use it in GitHub Desktop.
Dockerfile for updatedb & cronie hourly
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Usage: | |
| # 1時間ごとにupdatedbによってディレクトリデータベースを更新する | |
| # docker run --name app -it --rm -v `pwd`:/work u1and0/updatedb | |
| # app(このファイルで作成したイメージによるコンテナ)はtail -fでcrondの結果を標準出力に出力し続ける | |
| # | |
| # | |
| # appは/var/lib/mlocateディレクトリをさらしているので、 | |
| # --volumes-fromオプションによりappをマウントすると、 | |
| # updatedbによって作られたmlocate.dbファイルが | |
| # /var/lib/mlocateディレクトリに作成/更新される | |
| # | |
| # 以下のコマンドはappの/var/lib/mlocateディレクトリを | |
| # dbという名前のコンテナにマウントしたものを作成する。 | |
| # ```shell-session | |
| # $ docker create --name db --volumes-from app busybox | |
| # ``` | |
| # | |
| # | |
| # ```/etc/crontabs/root | |
| # # do daily/weekly/monthly maintenance | |
| # min hour day month weekday command | |
| # */15 * * * * run-parts /etc/periodic/15min | |
| # 0 * * * * run-parts /etc/periodic/hourly | |
| # 0 2 * * * run-parts /etc/periodic/daily | |
| # 0 3 * * 6 run-parts /etc/periodic/weekly | |
| # 0 5 1 * * run-parts /etc/periodic/monthly | |
| # | |
| # SHELL=/bin/sh | |
| # PATH=/sbin:/bin:/usr/sbin:/usr/bin | |
| # * * * * * updatedb -vU /work | |
| # ``` | |
| # hourly, dailyではスケジュールできない複雑なスケジュールは/etc/crontabs/rootにボリュームをアタッチする | |
| # | |
| # =========== | |
| # | |
| # 1. data volume用のコンテナdbを作る | |
| # docker create --name db -v /var/lib/mlocate -v /ShareUsers:/ShareUsers:ro busybox | |
| # | |
| # このコマンドではdbコンテナの/varlib/mlocateを外部に晒して、 | |
| # ホストのShareUsersをdbコンテナにマウントする | |
| # | |
| # | |
| # 2. updatedb用のコンテナappを作る | |
| # docker run --name app\ | |
| # --volumes-from db\ | |
| # -e UPDATEDB_PATH=/ShareUsers/<path to the db root>\ | |
| # u1and0/upadtedb | |
| # | |
| # このコマンドではdbコンテナのボリュームを参照し、 | |
| # updatedbをかけるパスをUPDATEDB_PATHで指定している | |
| # dbでマウントしているのでこのコンテナで再度マウントする必要はない | |
| # | |
| # | |
| # 3. locateコマンドでファイル検索するコンテナwebを作る | |
| # docker run --name web --volumes-from db u1and0/locate-server [OPTIONS] | |
| FROM alpine | |
| # locate, updatedbコマンドを使用可能にする | |
| # tzdataは環境変数ENVを変えるとUTCから変更される | |
| # ex) docker run --rm -it -e TZ='Asia/Tokyo' u1and0/updatedb | |
| RUN apk --update --no-cache add mlocate tzdata | |
| # work 下のディレクトリを毎時データベース化 | |
| ARG TASK="/etc/crontabs/root" | |
| RUN echo "SHELL=/bin/sh" >> $TASK &&\ | |
| echo "PATH=/sbin:/bin:/usr/sbin:/usr/bin" >> $TASK &&\ | |
| echo "7 * * * * updatedb -vU \${UPDATEDB_PATH}" >> $TASK | |
| # docker runするときに-e UPDATEDB_PATH=/work とすればwork以下のディレクトリを | |
| # var/lib/mlocate/mlocate.dbにまとめてくれる | |
| # RUN echo "#!/bin/sh" > $TASK &&\ | |
| # echo "PATH=/sbin:/bin:/usr/sbin:/usr/bin" >> $TASK &&\ | |
| # echo "* 1 * * * updatedb -vU /work" >> $TASK &&\ | |
| # chmod 755 $TASK | |
| # | |
| # updatedbデータベースファイルを格納するマウントポイント | |
| # VOLUME ["/var/lib/mlocate/"] | |
| # cron起動 | |
| CMD ["crond", "&&", "tail", "-f"] | |
| LABEL maintainer="u1and0 <e01.ando60@gmail.com>"\ | |
| description="make database regularly by `updatedb` command"\ | |
| version="u1and0/updatedb:0.0.0" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment