Laravel@ECS(Docker)でアプリケーションを作っています。
Dockerコンテナ(phpコンテナ)起動直後に何かしらコマンドを打ちたいとき、ENTRYPOINT を使うことがあるとおもいますが、ENTRYPOINTを実行したあとコンテナが終了してしまうので、それの回避方法です。
やりたいこと
phpコンテナ起動直後、laravel の artisanコマンドでキャッシュを生成したい。
実現方法
以下のように cache.sh を用意して、cache.shをDockerfileのENTRYPOINTで実行させます。
ファイルの最後に php-fpm を実行させるのが肝です。
cache.sh
#!/bin/sh
# キャッシュクリア
php /app/artisan event:clear
php /app/artisan view:clear
php /app/artisan route:clear
php /app/artisan config:clear
php /app/artisan clear-compiled
# キャッシュ生成
php /app/artisan config:cache
php /app/artisan route:cache
php /app/artisan view:cache
# php-fpm起動
php-fpm <============= ここが肝です。
Dockerfileは以下の感じ
Dockerfile
<中略>
:
COPY cache.sh /usr/local/bin/cache.sh
RUN chmod 777 /usr/local/bin/cache.sh
ENTRYPOINT ["/usr/local/bin/cache.sh"]
参考サイト