nginxイメージのDockerfileにあるように、nginxイメージでは、access.log
と error.log
の内容を標準出力とエラー出力に出力して、 docker logs
コマンドでログが見れるようにしています
これは、以下のDocumentationでも紹介されています
View logs for a container or service | Docker Documentation
これを参考に、自前で作るDockerfileでも同じ事をしたかったので試してみた
Dockerコンテナを手っ取り早くcrond化してコンテナ内でコマンドを定期実行する手順メモで作ったcrondのイメージを流用し、ログを標準出力に出力してみます
Dockerfile
1 2 3 4 5 6 7 8 9 10 11
| FROM alpine:3
# /dev/stdoutにシンボリックリンクをつくる RUN ln -sf /dev/stdout /var/tmp/1.log RUN ln -sf /dev/stdout /var/tmp/2.log
# 適当に1分おきにechoする RUN echo '*/1 * * * * echo "1" >> /var/tmp/1.log' >> /var/spool/cron/crontabs/root RUN echo '*/1 * * * * echo "2" >> /var/tmp/2.log' >> /var/spool/cron/crontabs/root
ENTRYPOINT ["crond", "-f"]
|
実行してみる
1 2 3 4 5 6 7 8 9 10 11
| // ビルド $ docker build -t test .
// 実行 $ docker run -d --rm test | xargs docker logs -f 1 2 1 2 1 2
|