2020年5月21日木曜日

Laravel for docker-compose

参照先:


アーキテクト:
lara-docker/
|----docker-compose.yml
|--- nginx/
|         |---- Dockerfile
|         |-----default.conf
|
|----- laravel/
|           |-----Dockerfile
|
|----.ebextensions(beanstalkの環境設定)
|-----Dockerrun.aws.json(beantalk用のデプロイファイル)


1)nginxの初期設定ファイルの記載を行う

①laravelのドキュメント先を指定する。
②PHP-fpm関連で、fastcgiの記述を行う。

vi lara-docker/nginx/default.conf
----------------------------------------------------------
server {
    listen       80;
    server_name  localhost;

    location / {
        # Laravelのドキュメントルート設定
        root   /var/www/laravel/public;

        fastcgi_split_path_info  ^(.+\.(?:php|phar))(/.*)$;   
        fastcgi_intercept_errors on;

        fastcgi_index  index.php;
        include        fastcgi_params;
        # FastCGIの向き先をLaravelコンテナに設定
        fastcgi_pass   laravel:9000;
   # FastCGI サーバに渡されるべきパラメータを設定(一般的な設定)
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        fastcgi_param  PATH_TRANSLATED $document_root$fastcgi_path_info;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
-----------------------------------------------------------------


2)nginxのDockerfileの作成を行う
①nginxとalfinelinuxを指定する
②上記で、作成したdefault.confを導入先のdockerにコピーを行う。

vi lara-docker/nginx/Dockerfile
-----------------------------------------------------------------
FROM nginx:1.17-alpine

# ローカルから設定ファイルをコピー
COPY  default.conf /etc/nginx/conf.d/default.conf
-----------------------------------------------------------------


3)Dockerfileを作成する。
Dockerfile(laravel)
①amazonlinuxを導入する
②php-pecl-zip:zipを使えるようにするファイル。
③php7.3をインストール
④php-dom:phpとMySQLを接続するプラグイン
⑤composerのインストール
⑥Laravelをインストールする。
⑦Laravelのプロジェクトの作成する。
⑧php-fpmのインストールを行う

vi lara-docker/laravel/Dockerfile
---------------------------------------------------------------------
FROM amazonlinux:2 as vender

# PHPインストール
RUN amazon-linux-extras install -y php7.3
RUN yum install -y php-pecl-zip php-mbstring php-dom

# Composerインストール
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer

# 環境変数設定
# root でのインストールを許可する設定
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME "/opt/composer"
ENV PATH "$PATH:/opt/composer/vendor/bin"

# AWS fargateではdepends_onやlinkでのコンテナ通信を行えないため、コンテナ名(php-fpm)では接続できない
# そのため127.0.0.1で通信を行う
ARG PHP_UPSTREAM_CONTAINER=127.0.0.1
ARG PHP_UPSTREAM_PORT=9000


# Laravelインストール
RUN composer global require "laravel/installer"

# Laravelプロジェクト作成
WORKDIR /var/www
RUN composer create-project laravel/laravel laravel

# php-fpmの導入する。
FROM php:7.3-fpm-alpine

# ビルド用コンテナから必要なコンテンツをコピー
COPY --from=vender --chown=www-data:www-data /var/www/ /var/www/
------------------------------------------------------------------------------------------

4)Nginxのコンテナのビルドを行う
docker build nginx/. -t nginx 

5)Laravelのコンテナのビルドを行う
docker build laravel/. -t laravel

6)docker-composeを起動する。
docker-compose up

7).ebextensionsの作成を行う
mkdir .ebextensions


8)00permission.configの作成
(Laravelのパブリックディスクの権限設定)

vi 00permission.config
--------------------------------------------------------------------------------------------
container_commands:
  01chmod_storage:
    command: "chmod -R 777 ./storage"
---------------------------------------------------------------------------------------------

9)composer.configの作成
(Laeravelのドキュメントルート用)

vi composer.config
----------------------------------------------------------------------------------------------
option_settings:
  aws:elasticbeanstalk:container:php:phpini:
    document_root: /public
-----------------------------------------------------------------------------------------------


10)beanstalkのデプロイ用のファイルの作成を行う。





0 件のコメント:

コメントを投稿

php log(ECS ログ出力)

# PHPエラーログの設定 ENV PHP_INI_DIR /usr/local/etc/php RUN { \ echo 'log_errors = On' ; \ echo 'error_log = /proc/self/...