カテゴリー
Linux

Vue.js のお試し開発環境を構築するシンプルな Docker Compose を用意した

はじめに

以前、 Dockerfile を書かないで docker-compose.yml だけで Node.js 開発環境を用意する方法 にて Node.js のシンプルな開発環境を docker-compose.yml を使用して構築しました。

今回、 Vue.js を使ったアプリをお試しで作りたいです。この時、前回だけでは環境が足りませんでしたので、ノートいたします。

カテゴリー
Linux

Dockerfile を書かないで docker-compose.yml だけで Node.js 開発環境を用意する方法

はじめに

ちょっとお試しで Vue Material Design Component Framework — Vuetify.js に入門したいと思いました。

この時、 Docker を使って開発環境を用意しようと思いましたけれども、最初は Dockerfile を使ってあれこれチューニングすることなく、シンプルに始めたかったのです。

そのために少し調べるような手間が発生しましたので、今後のためにメモしておきます。

カテゴリー
Linux

Docker イメージ php:7.4.5-apache で Apache の他に cron も動かす方法

はじめに

oki2a24/sample_dockerized_laravel6: Laravel6 を Docker 化するサンプルです。 にて Laravel を Docker コンテナ化しました。

Apache 入りの PHP コンテナで Laravel を動かしています。この Laravel で タスクスケジュール 6.x Laravel も行いたいと思いました。

cron を動かせば簡単です。

しかし、 コンテナではすでに Apache のプロセスが動いており、ここに cron を足せません。

これを、なんとかしたのが本投稿となります。

カテゴリー
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 で扱う、ということをやっていきます。

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