ポイント
- debian:bullseye-slim イメージをベースにした。
- Supervisor 4 が対象
- ログ出力に関して権限を修正する必要があった。
- ソケットに関する権限不足に対処する必要があった。
docker-compose
コマンドだけで環境をうまく切り替える方法docker-compose -f
オプションを使うことで、使用する YAML ファイルを取捨選択できるようになった。これを利用して、開発環境用ではボリューム共有を使い、サーバ環境用では別のサービスを追加する、といったことが可能になる。docker-compose -f
オプションで毎回 YAML ファイルを指定するのはとても手間がかかるが、解決することができる。Compose の設定に用いられる環境変数のデフォルト値を .env
という 環境ファイル で行うことができる。このファイルに COMPOSE_FILE
という CLI 変数 を定義し、その値に使用する YAML ファイルを指定することで -f
オプションを省略することができる。.devcontainer/devcontainer.json
が独自の設定ファイル。 .devcontainer/docker-compose.yml
はただの Docker Compose ファイル。.devcontainer/devcontainer.json
と .devcontainer/docker-compose.yml
の難しい箇所は本投稿の続きに記載した。以前、 Dockerfile を書かないで docker-compose.yml だけで Node.js 開発環境を用意する方法 にて Node.js のシンプルな開発環境を docker-compose.yml を使用して構築しました。
今回、 Vue.js を使ったアプリをお試しで作りたいです。この時、前回だけでは環境が足りませんでしたので、ノートいたします。
ちょっとお試しで Vue Material Design Component Framework — Vuetify.js に入門したいと思いました。
この時、 Docker を使って開発環境を用意しようと思いましたけれども、最初は Dockerfile を使ってあれこれチューニングすることなく、シンプルに始めたかったのです。
そのために少し調べるような手間が発生しましたので、今後のためにメモしておきます。
oki2a24/sample_dockerized_laravel6: Laravel6 を Docker 化するサンプルです。 にて Laravel を Docker コンテナ化しました。
Apache 入りの PHP コンテナで Laravel を動かしています。この Laravel で タスクスケジュール 6.x Laravel も行いたいと思いました。
cron を動かせば簡単です。
しかし、 コンテナではすでに Apache のプロセスが動いており、ここに cron を足せません。
これを、なんとかしたのが本投稿となります。
/etc/apache2/sites-available/001-my.conf
などのファイルを用意して配置する。a2dissite 000-default
でデフォルトの設定ファイルを無効にする。a2ensite 001-my
で用意した設定ファイルを有効にする。CLI で日本語を打とうとしたら、できませんでした。全角で日本語を打てるのですけれども、変換、確定するときに消えてしまいました。 vim をインストールし、そこで日本語を入力してみようとしてみましたが、やはりダメでした。別の文字へと変換されてしまったのです。例えば "あいう" => "~A~B~A~D~A~F" となってしまいました。
php -a
): 日本語を使用できた。mysql -u root -p ...
): 日本語を使用できた。Debian
apt-get update && apt-get install -y locales
sed -i -E 's/# (ja_JP.UTF-8)/\1/' /etc/locale.gen
locale-gen
export LANG=ja_JP.UTF-8
MySQL や PHP など debian:buster-slim ベースのイメージの Dockerfile に書く場合
RUN apt-get update && apt-get install -y \
locales \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN sed -i -E 's/# (ja_JP.UTF-8)/\1/' /etc/locale.gen \
&& locale-gen
ENV LANG ja_JP.UTF-8
composer.json
の php artisan
コマンドに、 --env=laravel
といったオプションが不要になる。--env=laravel
オプションを付けなくとも (.env.laravel
を読み込むように環境変数 APP_ENV に laravel を付けることで) php artisan
コマンドを使えるようにするので、こちらの方が統一されており、望ましいと言える。"@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
とする。APP_ENV=laravel
とする。
ENV APP_ENV laravel
などと書く。