Docker 환경의 Laravel 앱을 Heroku 배포

Docker 환경에서 Laravel 앱을 배포하는 것이 처음이므로 기사에 정리해 보았습니다.

시작할 때



Docker 환경을 만드는 방법과 Laravel 앱을 만드는 방법은 몬쇼 씨의 블로그를 참고로하고 있습니다.
- htps : // 시마bぉg. 네 t/도 c케 rぁ라ゔぇl-긴긴 x-mysql/
- htps : // 시마bぉg. 네 t/아라ゔぇl-게이반/
Heroku에 등록해, 신용 카드 등록도 끝나고 있는 것을 전제로 진행해 갑니다.
이번 디렉토리 구조입니다.
larapic
 ├── README.md
 ├── infra
 │   ├── mysql
 │   ├── nginx
 │   └── php
 ├── docker-compose.yml
 └── laravel
     ├── app
     ├── bootstrap
     ├── config
     ├── ・・・

Heroku에 앱 만들기



브라우저에서 Heroku를 열고 로그인합니다.
New 버튼에서

앱 이름에 애플리케이션 이름 입력
(앱 이름) is available
되도록 명명합니다.

Github와 협력





Procfile 만들기


larapic
 ├── README.md
 ├── infra
 │   ├── mysql
 │   ├── nginx
 │   └── php
 ├── docker-compose.yml
 └── laravel
     ├── app
     ├── bootstrap
     ├── config
     ├── ・・・
   ├── Procfile(新しく作成)
   ├── ・・・

↑처럼 Procfile을 만듭니다.

Procfile
web: vendor/bin/heroku-php-apache2 public/

이와 같이 Procfile내에 기술하는 것으로 Heroku 기동시에 apache 서버가 기동하는 것 같습니다.
로컬에서는 nginx를 사용하고 있었기 때문에 nginx로 하고 싶었습니다만, 여러가지 귀찮을 것 같았기 때문에 apache로 했습니다(←apache에 실례).

DB는 MySQL을 이용



로컬에서 MySQL을 사용하고 있었기 때문에 프로덕션에서도 MySQL을 사용하고 싶습니다 (nginx를 포기했기 때문에 이번에는 노력합니다).
Heroku에서 MySQL을 사용하고 싶다면 ClearDB를 사용하십시오 (신용 카드 등록 필요).

terminal
% heroku addons:create cleardb:ignite

heroku에서 MySQL 5.7 이상을 사용하는 경우 JawsDB를 사용합니다.

terminal
% heroku addons:create jawsdb:kitefin

자신의 경우 ClearDB에서 진행한 결과
Mysql2::Error: Specified key was too long; max key length is 767 bytes 

이러한 오류가 발생했습니다.
해결 방법은이 기사를 참조 → htps : // 코 m / 레이야 018 / ms / 바 8 세 아 732 에다 c07 에 491
결론으로서는 JawsDB를 사용하는 것으로 해결합니다.

Buildpacks 설정




이렇게 브라우저에서 입력해도 괜찮습니다.
터미널로부터라면↓

terminal
% heroku buildpacks:set https://github.com/timanovsky/subdir-heroku-buildpack
% heroku buildpacks:add heroku/node.js
% heroku buildpacks:add heroku/php

환경 변수 설정



Laravel의 경우 APP_KEY 등록이 필요합니다.

terminal
% heroku run "php artisan key:generate --show"
# (出力)base64:◯△□×・・・
% heroku config:set APP_KEY=base64:◯△□×・・・

DB 설정도 환경 변수로 설정합니다.

terminal
% heroku config:get CLEARDB_URLもしくはJAWSDB_URL
# (出力)mysql://◯◯◯◯:△△△△@□□□□/××××?reconnect=true
% heroku config:set DB_CONNECTION=mysql
% heroku config:set DB_USERNAME=◯◯◯◯
% heroku config:set DB_PASSWORD=△△△△
% heroku config:set DB_HOST=□□□□
% heroku config:set DB_DATABASE=××××
% heroku config:set DB_PORT=3306

배포하려는 폴더(이번에는 laravel)를 지정하여 환경 변수로 설정합니다.
larapic
 ├── README.md
 ├── infra
 │   ├── mysql
 │   ├── nginx
 │   └── php
 ├── docker-compose.yml
 └── laravel ←ここ
     ├── app
     ├── bootstrap
     ├── config
     ├── ・・・

terminal
% heroku config:set PROJECT_PATH=laravel/

마이그레이션



Heroku에 테이블을 만듭니다.

terminal
% heroku run php artisan migrate

배포



terminal
% git push heroku main

이제 배포할 수 있었습니다.

좋은 웹페이지 즐겨찾기