日々更新中です!

AWS ECR×Laravelでnginxとphp-fpmのイメージをpushしてみた!

  • URLをコピーしました!
いずみん

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イメージをビルドします。

<hoge>はあなたが先ほど作成したECRのURIです。

いずみん

僕はphp-fpmで変なエラーが出ましたが、PCを再起動したら直りました。

Dockerイメージをpush

docker push <hoge>:latest

先ほどビルドしたイメージをそれぞれpushします。

ECR側でイメージが確認できたらOKです!

まとめ

今回は、LaravelにDockerを取り入れて、ECRにイメージをpushするまでの手順を解説しました。

手順自体はそこまで難しくなかったですね。

ではまた!

  • おすすめ本はこちら!
いずみん

僕は↑の本でLaravelの勉強をしました!
非常に分かりやすいのでおすすめです!

  • 自由な生き方がしたいなら!

自由な生き方をするためには、稼ぐスキルを身に付けなければなりません。

当サイト「リバトレ」では稼ぐスキルに関する情報を日々発信しているので、興味のあるものから見て頂ければ嬉しいです。

この記事が気に入ったら
いいね または フォローしてね!

シェアするんやで!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

いずみんのアバター いずみん 自由大好きおじ

自由大好きおじ | 物販月利50万達成⇨脱サラ | 物販(アパレルせどり)・アフィリエイト・プログラミング・投資に関する情報を発信中 | 元エンジニア | 保有資格約20個

コメント

コメントする

目次
閉じる