
LaravelアプリをDockerイメージとしてプッシュしたんだけど、どうしたらいいのかな?
具体的な手順を教えてほしんだけど。。
こんな悩みを解決します。
- 本記事の内容
- LaravelアプリをDockerイメージとしてプッシュする方法
- 画像付きの具体的な手順
- 本記事の執筆者


- 元エンジニア(歴7年)、資格保有数約20個(IT系以外も含む)
- 物販月利50万円⇒脱サラ
- 物販、システム開発、アフィリエイト、プログラミング、投資をやっています。
- 物販は彼女と楽しみながらやっています!
今回は、LaravelにDockerを取り入れて、ECRにイメージをpushするまでの手順を解説します。



すぐ読み終わるので、是非最後まで読んでみてください!
前提
- Laravelアプリがあること
ECRのリポジトリ作成
ECRのリポジトリを、「nginx」「php-fpm」用として2つ作成します。
今回は、
- 「laravel-app/nginx」
- 「laravel-app/php-fpm」
として作成しました。


上記のような感じですね。
Laravel×Dockerの事前準備
まずは、Dockerファイルを準備します。
version: '3.2'
services:
nginx:
build:
context: .
dockerfile: ./docker/nginx/Dockerfile
ports:
- "80:80"
depends_on:
- php-fpm
php-fpm:
build:
context: .
dockerfile: ./docker/php-fpm/Dockerfile
ルートに「docker-compose.yml」ファイルを作成します。
FROM nginx
ADD ./docker/nginx/site.conf /etc/nginx/conf.d/default.conf
RUN mkdir -p /app/public
ADD ./public/ /app/public/
nginxのDockerファイルです。
server {
index index.php index.html;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /app/public;
location ~ ^.+/\.(png|jpg|jpeg|gif|ico|css|js|html?)$ {
try_files $uri $uri/ =404;
}
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
nginxの「site.conf」です。
FROM php:7-fpm
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get install -y git zlib1g-dev zip unzip libzip-dev
RUN docker-php-ext-install zip
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer
RUN composer global require hirak/prestissimo
RUN mkdir -p /app
ADD . /app/
WORKDIR /app
RUN composer install
RUN cp .env.example .env
RUN php artisan key:generate
RUN chmod -R a+w storage/ bootstrap/cache
php-fpmのDockerファイルです。
「libzip-dev」のエラーでハマりました。。
「libzip-dev」は必要なのでインストールします。
Dockerイメージのpushまで
ECRにログイン
aws ecr get-login --region ap-northeast-1 --profile ecr --no-include-email
ECRにログインします。
Dockerにログイン
docker login -u AWS -p <hoge> https://<hoge>.dkr.ecr.ap-northeast-1.amazonaws.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
先ほどのコマンドが成功すると、クソ長いDockerコマンドが表示されるので実行します。
Dockerイメージをビルド
docker build -t <hoge>:latest -f docker/nginx/Dockerfile .
docker build -t <hoge>:latest -f docker/php-fpm/Dockerfile .
Dockerイメージをビルドします。



僕はphp-fpmで変なエラーが出ましたが、PCを再起動したら直りました。
Dockerイメージをpush
docker push <hoge>:latest
先ほどビルドしたイメージをそれぞれpushします。
ECR側でイメージが確認できたらOKです!
まとめ
今回は、LaravelにDockerを取り入れて、ECRにイメージをpushするまでの手順を解説しました。
手順自体はそこまで難しくなかったですね。
ではまた!
- おすすめ本はこちら!



僕は↑の本でLaravelの勉強をしました!
非常に分かりやすいのでおすすめです!
- 自由な生き方がしたいなら!
自由な生き方をするためには、稼ぐスキルを身に付けなければなりません。
当サイト「リバトレ」では稼ぐスキルに関する情報を日々発信しているので、興味のあるものから見て頂ければ嬉しいです。
コメント