LoginSignup
4
3

More than 5 years have passed since last update.

Laravel を Elastic Beanstalk Docker にデプロイ

Last updated at Posted at 2018-07-01

趣味・業務共にアプリを載せるサーバーは VPS か Heroku しか経験がない。
ということでAWSの中で比較的敷居が低そうなElastic Beanstalkでこんにちはしてみた。
用意されたPHP環境にデプロイすることもできるが、Dockerfileを組むのが好きなのでDockerで。

環境

  • OSX High Sierra
  • eb-cli インストール済
  • laravel/installer インストール済

Laravel プロジェクト作成

laravel new myproject
cd myproject

プロジェクト直下にDockerfile作成

myproject/Dockerfile
FROM dyoshikawa/laravel:latest

RUN apk add nginx
RUN mkdir /run/nginx
COPY nginx.conf /etc/nginx/conf.d/default.conf

RUN sed -i -e "s/www-data/nginx/g" /usr/local/etc/php-fpm.d/www.conf

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY . .
RUN chmod +x start.sh

RUN composer install
RUN chown -R nginx:nginx /usr/src/app

EXPOSE 80
CMD bash start.sh

ベースイメージはDockerhubで公開している。

myproject/start.sh
#!/bin/bash
nginx
php-fpm
myproject/nginx.conf
server {
    listen  80 default_server;
    listen  [::]:80 default_server;
    server_name  localhost;
    root /usr/src/app/public;
    index index.php index.html;

    location / {}

    location ~ \.php$ {
        root           /usr/src/app/public;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/src/app/public$fastcgi_script_name;
        include        fastcgi_params;
    }

    error_page 404 /404.html;
    location = /40x.html {}
}

下のEB用設定ファイルも作成。

myproject/Dockerrun.aws.json
{
  "AWSEBDockerrunVersion": "1",
  "Ports" : [{ "ContainerPort": "80" }]
}

eb init, create, deploy

eb init

対話で色々聞かれる。

  • Select a default region9) ap-northeast-1 : Asia Pacific (Tokyo)
  • Do you wish to continue with CodeCommit?n
eb create

これも聞かれる。

  • Enter Environment NameEnter
  • Enter DNS CNAME prefixEnter
  • Select a load balancer type2) application
eb deploy

待つだけ。

環境変数

php artisan key:generate --show を叩いて出力されるkeyをコピーする。
AWS EBのWebコンソールから 設定ソフトウェア 変更環境プロパティ で環境変数をセットできる。
ここで APP_KEY={コピーしたkey} を設定。

最後に

こんにちはを見たかっただけなのでRDSは建てていない。
趣味用途を考えるとHerokuの方が簡単だし安いので環境は消した。
消さないと課金されていくので注意(当たり前だけど一応)。

参考

Rails on DockerをElastic Beanstalkにデプロイする | Developers.IO
AWS + Nginx + PHP + Laravel - Qiita

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3