カテゴリー
Linux

Laracel 6 で、 `.env` ファイルの名前を変えて運用する方法 2 (補足)

まとめ

  • 前回 、 "Composer コンテナに環境変数を設定するほうが筋が良いかもしれない" とコメントしたが、実際にできたのでメモ
  • composer.jsonphp artisan コマンドに、 --env=laravel といったオプションが不要になる。
  • 開発時は運用時は、 --env=laravel オプションを付けなくとも (.env.laravel を読み込むように環境変数 APP_ENV に laravel を付けることで) php artisan コマンドを使えるようにするので、こちらの方が統一されており、望ましいと言える。
  • feat: Laravel の使用する .env ファイル名を変更する by oki2a24 · Pull Request #7 · oki2a24/sample_dockerized_laravel6
カテゴリー
Linux

Laracel 6 で、 `.env` ファイルの名前を変えて運用する方法

まとめ

  • composer.json を修正する。
    • "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" を修正する。例えば、 "@php -r \"file_exists('.env.laravel') || copy('.env.laravel.example', '.env.laravel');\"" とする。
    • @php artisan package:discover --ansi を修正する。例えば、 @php artisan package:discover --ansi --env=laravel とする。
    • 同様に @php artisan key:generate --ansi を修正する。例えば、 @php artisan key:generate --ansi --env=laravel とする。
  • サーバレベル、システムレベルやコンテナレベルで定義されている外部の環境変数によって使用する .env ファイル名を制御する。例えば、 APP_ENV=laravel とする。
カテゴリー
Linux

PostgreSQL の無難なロケールは “なし” (C) だと思うが、 Docker コンテナを使いたいときにロケールをなし (C) に設定する簡単な方法

まとめ

  • 起動時の環境変数 POSTGRES_INITDB_ARGS で設定することで、ロケールをなし (C) に設定可能
    • - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --locale=C
    • POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --locale=C" <= 注意。コッチっは試していない。
  • ちなみに、 docker run の場合は docker run --rm -it -e POSTGRES_PASSWORD=secret -e POSTGRES_INITDB_ARGS="--encoding=UTF-8 --locale=C" postgres:12.2 bash といった書式になる。
カテゴリー
Linux

docker-compose.yml に Schemaspy を利用するシンプルな service を書いて、データベースドキュメントを自動生成する

ポイント

  • property ファイルではなく command をわざと利用した。 command のオプションに .env のデータベース接続情報を渡したかったため。 property ファイルの場合、 .env の情報を property ファイルにも記述しなければならなくなる。
  • MySQL 8 の場合、データベースに接続するために SSL を false にしてやる必要があった。この時、エスケープの関係で cli では -connprops useSSL\\=false 、 (こちらはうろ覚えだが) property ファイルでは schemaspy.connprops=useSSL\=false と書く必要があり (試していないが schemaspy.connprops="useSSL\=false"schemaspy.connprops="useSSL=false" でもいいのかも) 、ややこしかった。
  • MySQL 8 の場合、データベースに接続するために別途ドライバーをダウンロードして用意してやる必要があった。
  • 作ったもの => oki2a24/sample_docker_schemaspy: Docker Schemaspy コンテナの使用例です。
カテゴリー
コンピューター

`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 を定義すると便利