カテゴリー
コンピューター

`docker-compose up` 時の CMD でマウントしたディレクトリに `chown` しようとして失敗した

やりたいこと

今まで、 docker-compose up -d 後に、コンテナと共有したディレクトリをコンテナ内で chown を実行して所有グループ・所有者を変更していました。 これが面倒で、時々忘れてしまいますので、なんとか楽にできないだろうかと思いました。

カテゴリー
Linux

【ELK スタック】Docker Compose アプリ (コンテナ) のログを別の Docker Comose のネットワークの Elasticsearch へ送る構成

はじめに

Docker ロギング・ドライバを使ってコンテナログを ELK スタックで利用する – oki2a24 の続きです。

前回は、 1 つの Docker Compose に、 アプリ (Nginx) も Logstash も Elasticsearch も Kibana も全部入っていました。

開発環境ではこれで足ります。けれども、他のアプリのログも集めたいとなりますと、 Elasticsearch と Kibana は独立させたいと思うようになりました。

今回、以下の 2 つの Docker Compose を用意し、これらを Docker のネットワークで繋ぐことで ELK スタックを実現できましたので、ノートいたします。

  • Docker Compose その 1: Nginx と Logstash
  • Docker Compose その 2: Elasticsearch と Kibana
カテゴリー
Linux

Docker ロギング・ドライバを使ってコンテナログを ELK スタックで利用する

はじめに

Docker Compose でミニマムに ELK スタックに入門する記録 – oki2a24 の続きです。

前回までは、 Nginx コンテナの、 Nginx のログ、 /var/log/nginx/access.log などのログファイルを、ディレクトリ共有することで Logstash もアクセス可能にし、読み取る、というやり方でやってきました。

今回は、ログファイルをファイルに書き込むのではなく標準出力にして (変更するというよりも、標準出力がデフォルト) 、そうするとログは Nginx コンテナのログとして出力されますので、これを Logstash で扱う、ということをやっていきます。

無事できたので、ワクワクしています♪

カテゴリー
Linux

Docker Compose でミニマムに ELK スタックに入門する記録

まとめ

  • あらかじめ用意するディレクトリは、 Docker でミニマムに ELK スタックに入門する記録 – oki2a24 とほぼ同じ。
    • data/logstash/pipeline/logstash.conf
    • data/nginx/log/
  • Elasticsearch のデータは、 Docker でミニマムに ELK スタックに入門する記録 – oki2a24 では data/elasticsearch に保存していたが、トップレベル volumes として es_data という名前で定義した。
  • 各 service に depends_on を設定した。
    • elasticsearch: 何にも依存しないのでなし。
    • kibana: elasticsearch がないと動かしても意味ないので、 elasticsearch を depends_on に設定した。
    • logstash: elasticsearch がないと動かしても意味ないので、 elasticsearch を depends_on に設定した。
    • nginx: ログを扱ってくれる logstash があらかじめ起動しておいて欲しいので、 logstash を depends_on に設定した。
カテゴリー
Linux

Docker php:7.3-fpm で zip モジュールを使えるようにしようとして発生したエラーと解決方法

解決方法まとめ

  • コンテナにインストールするパッケージを zlib1g-dev から libzip-dev へ変更した。
  • イメージのビルド時に PHP の設定として、 docker-php-ext-configure zip --with-libzip を追加した。
カテゴリー
Microsoft

Windows の Git Bash から Docker や Docker Compose をうまく動かすための .bashrc

ポイント

  • コマンドの前に winpty をつければ動くようになる。例えば、 winpty docker ... など。
  • winpty を毎回つけるのは手間なため、 .bashrc などに alias を定義すると便利
カテゴリー
コンピューター

Laravel 5.5 “完全に理解した” 。5.2 の中級者向けタスクリストを 5.5 でやりきるためのページ

はじめに

を座右に置きながら、 Laravel 5.5 で実践したときの記録をすべて載せました。上記ページと本投稿に沿って実践すれば、 Laravel 5.5 での中級者向けタスクリストを作ることができます。

最終の完全なソースコードは次のページから取得可能です。

早速、始めていきます。

カテゴリー
Linux

Nginx + PHP-FPM で unix ドメインソケットを使ったシンプルな docker-compose.yml を書きました。2

ポイント

  • Docker イメージは、 alpine を使わない。
  • Nginx の実行ユーザと PHP-FPM の listen.owner 、 listen.group とを一致させる。
  • Nginx で fastcgi_pass に指定するファイルのディレクトリと、 PHP-FPM で listen に指定するファイルのディレクトリとを、 Docker Compose のトップレベルで定義する名前付き volume で共有する。
カテゴリー
Linux

Dockerfile でタイムゾーン設定するメモ

まとめ

FROM debian:stretch-slim なイメージはこれで OK でした。
例えば、今回設定したのは次です。

  • php:apache
  • mysql:latest
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}
... 略 ...
カテゴリー
Apple

PHP GD をインストールするための Dockerfile の少し複雑な内容メモ

GD を使える php:5.6-apache の Dockerfile 内容

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

ポイント