やりたいこと
今まで、 docker-compose up -d 後に、コンテナと共有したディレクトリをコンテナ内で chown を実行して所有グループ・所有者を変更していました。
これが面倒で、時々忘れてしまいますので、なんとか楽にできないだろうかと思いました。
今まで、 docker-compose up -d 後に、コンテナと共有したディレクトリをコンテナ内で chown を実行して所有グループ・所有者を変更していました。
これが面倒で、時々忘れてしまいますので、なんとか楽にできないだろうかと思いました。
Docker ロギング・ドライバを使ってコンテナログを ELK スタックで利用する – oki2a24 の続きです。
前回は、 1 つの Docker Compose に、 アプリ (Nginx) も Logstash も Elasticsearch も Kibana も全部入っていました。
開発環境ではこれで足ります。けれども、他のアプリのログも集めたいとなりますと、 Elasticsearch と Kibana は独立させたいと思うようになりました。
今回、以下の 2 つの Docker Compose を用意し、これらを Docker のネットワークで繋ぐことで ELK スタックを実現できましたので、ノートいたします。
Docker Compose でミニマムに ELK スタックに入門する記録 – oki2a24 の続きです。
前回までは、 Nginx コンテナの、 Nginx のログ、 /var/log/nginx/access.log などのログファイルを、ディレクトリ共有することで Logstash もアクセス可能にし、読み取る、というやり方でやってきました。
今回は、ログファイルをファイルに書き込むのではなく標準出力にして (変更するというよりも、標準出力がデフォルト) 、そうするとログは Nginx コンテナのログとして出力されますので、これを Logstash で扱う、ということをやっていきます。
無事できたので、ワクワクしています♪
data/logstash/pipeline/logstash.confdata/nginx/log/data/elasticsearch に保存していたが、トップレベル volumes として es_data という名前で定義した。docker-php-ext-configure zip --with-libzip を追加した。winpty docker ... など。を座右に置きながら、 Laravel 5.5 で実践したときの記録をすべて載せました。上記ページと本投稿に沿って実践すれば、 Laravel 5.5 での中級者向けタスクリストを作ることができます。
最終の完全なソースコードは次のページから取得可能です。
早速、始めていきます。
FROM debian:stretch-slim なイメージはこれで OK でした。
例えば、今回設定したのは次です。
FROM mysql:latest
ARG TZ=UTC
ENV TZ ${TZ}
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY ./config-file.cnf /etc/mysql/conf.d/
${TZ} は、docker-compose.yml で定義しました。args と environment です。
${WORKSPACE_TIMEZONE} は、.env ファイルで定義しています。
services:
php_apache:
build:
context: ./php_apache
args:
TZ: ${WORKSPACE_TIMEZONE}
environment:
- TZ=${WORKSPACE_TIMEZONE}
... 略 ...
FROM php:5.6-apache
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-install gd pdo_mysql mysqli mbstring \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& a2enmod rewrite
COPY ./php.ini /usr/local/etc/php/
COPY ./000-default.conf /etc/apache2/sites-available/000-default.conf