Dokku에서 Laavel5 프로젝트 설계
산타클로스가 온 집을 꾸미다
크리스마스가 이틀 남았다.
홍리서송은 산타클로스다.오늘, 나는 너에게 이틀 동안 산타클로스라고 부르는 방법을 가르쳐 주고 싶다.
굴뚝을 쌓다
고용된 산타클로스의 수입은 일정 기간 디자인된 선물의 가치에 의해 결정된다.산타클로스는 굴뚝이 있는 집을 좋아해 선물을 고속으로 디자인하는 데 쓰인다는 것이다.굴뚝이 없는 집에서 선물을 설계하는 것은 매우 번거롭죠.
산타클로스를 맞이하기 위해 먼저 굴뚝붉은 송어으로 건설합시다!
도꾸가 뭐야?
제작 서비스를 디자인하면 조금만 의욕을 북돋우지 않으면 곤란하다.
서비스를 하고 싶은데 필요한 DB와 환경을 하나하나 구축해야 한다.산타클로스는 선물 디자인을 망설였다.
히어쿠 같은 파아스를 회사 내에서 사용하면 환경 구축은 히어쿠에게 맡기고, 산타클로스는 코드와 설정을 조금만 써도 쉽게 디자인할 수 있어 편리하다.
도쿠를 사용하면 도커의 기본 히로쿠 레이크를 만들 수 있는 파우스.이것은 굴뚝이다.우선 아래 기사를 참고하여 하루 안에 굴뚝을 세우세요.
참조: Dokku
이렇게 해서 산타클로스라는 준비를 마쳤다.
디자인 선물
다음날 아침 깨어났을 때 산타클로스가 보낸 편지(업무 의뢰 서류)가 당신에게 도착했습니다.
"어머나, 어쩔 수 없구나."라고 네가 말하면서 붉은 포도주 낡은 옷을 입었다.
네.너는 산타클로스다.남은 하루 동안 굴뚝에서 회사의 서비스를 설계합시다!
(여기서 괜찮은 BGM 틀어주세요)
본문의 목적
실제로 산타클로스 업무 의뢰를 받은 필자가 굴뚝(Dook)에 선물(PHP 애플리케이션)을 설계하는 데 실패한 점을 예를 들어 소개한다.
또 선물은 라벨5라는 프레임을 활용해 개발됐다.(테마를 PHP로 설정하면 됩니다.)
이 글을 읽으신 여러분, 실패하지 않는 세계선으로...!
가정하다
컨디션
실제로 산타클로스 업무 의뢰를 받은 필자가 굴뚝(Dook)에 선물(PHP 애플리케이션)을 설계하는 데 실패한 점을 예를 들어 소개한다.
또 선물은 라벨5라는 프레임을 활용해 개발됐다.(테마를 PHP로 설정하면 됩니다.)
이 글을 읽으신 여러분, 실패하지 않는 세계선으로...!
가정하다
컨디션
표식
your.dokku.domain
입니다.참조: Dokku의 버전 확인 방법
ssh [email protected] version
0.3.21
Dokku에서 Laavel 프로젝트를 설계할 때 가장 적합한 점
간단하게 디버깅하면 Node.js 응용 프로그램으로 만들기
PHP 프로젝트를 개발할 때 주의사항이 많습니다.
라벨의 일반 프로젝트를 설계하려면 다음과 같은 결과가 나온다.git push dokku <deploy branch>
(略)
-----> Node.js app detected
기본 및 node입니다.js 프로젝트로 오인되었습니다.
루트에composer.json
가 있다면 PHP의 응용으로 여겨지지만 낮은 차원에서package.json
가 있다면 노드의 응용으로 여겨진다.이거 히로쿠도 마찬가지야.
참조: Docker 미니 Heroku!사쿠라 구름으로'도쿠'- 벚꽃 해설.
해결 방법: PHP 프로젝트로 설계
사용Heroku에서 PHP를 사용할 때 주의해야 할 점-Qita.이것은 응용 프로그램을 설치할 때 서버 설정을 지정할 수 있는 Heroku의 구조입니다.
Dokku는 Heroku의build pack을 지원합니다.
Dokku supports deploying applications via Heroku buildpacks with Herokuish or using a project's dockerfile.
Buildpacks
Heroku 공식 PHP용 빌드 패키지Dokku - The smallest PaaS implementation you've ever seen를 사용합니다.
설치heroku/heroku-buildpack-php는 프로젝트의 노선에 .buildpacks
파일을 만들고 그 안에 GiitHub의 URL을 쓰면 자동으로 읽는다.
.buildpackhttps://github.com/heroku/heroku-buildpack-php
콩 지식: "Dokku PHP"로 조사해보면, 맨 위 창고는 2015년 11월 30일까지 아직 제대로 작동하지 않습니다.
pauldub/dokku-multi-buildpack는 트랩이며 중간에 아래와 같이 오류를 토해내면 됩니다.
원래 PHP5입니다.6도 대응하지 않고 불안을 부추긴다.remote: /tmp/buildpack3k4mD/bin/compile: line 270: /app/bin/jq: No such file or directory
remote: ! Script error in /tmp/buildpack3k4mD/bin/compile on or near line 270
시험이 제멋대로 이루어져서 실패했고 설계도 실패했다
도쿠한테 다시 디버깅하면 또 실패할 거야.(略)
-----> Preparing runtime environment...
NOTICE: No Procfile, using 'web: vendor/bin/heroku-php-apache2'.
Using release configuration from last framework (PHP).
-----> Discovering process types
Procfile declares types -> web
-----> Releasing <App name>...
-----> Deploying <App name>...
-----> Running pre-flight checks
For more efficient zero downtime deployments, create a file CHECKS.
See http://progrium.viewdocs.io/dokku/checks-examples.md for examples
CHECKS file not found in container: Running simple container check...
-----> Waiting for 10 seconds ...
remote: App container failed to start!!
=====> <App name> container output:
No dyno detected; using defaults for 1X...
4 processes at 128MB memory limit.
Starting php-fpm...
Starting httpd...
=====> end <App name> container output
remote: /usr/local/bin/dokku: 52 行: 18907 強制終了 dokku deploy "$APP"
(略)
해결 방법: 자체 제작 CHECKS 파일
자동 제작된 프리-flight checks가 실패한 것 같습니다.bobmaerten/dokku-buildpack-php 보면서 자작.프로젝트의 노선에 CHECKS
된 서류를 작성하여 적당한 테스트를 작성한다.
CHECKSWAIT=5
이상의 파일을 만들면 정상적으로 디버깅을 할 수 있습니다.수고하셨습니다.
Dokku에서 명령을 실행하면 "cannot enable tty mode on non tty input"이라고 합니다.
출력 결과를 표시할 수 없습니다.
해결 방법: - t 추가 옵션 실행
The -t is used to request a pty.
오류 메시지에 나타나는 링크
Dokku에서 만든 응용 프로그램의 환경 변수를 설정하고 싶습니다.
필요하면 응용 프로그램 고유의 환경 설정을 추가할 수 있다.ssh [email protected] config:set <アプリ名> ENV=development
Dokku로 DB의 migration을 해보고 싶어요.
DB를 사용하는 응용 프로그램을 만들려면 Dokku에 DB를 설정해야 합니다.해봐.
DB 생성
ssh [email protected] postgresql:create <App name>
결과 내보내기
PostgreSQL container created: postgresql/<App name>
Host: IP_ADDRESS
Port: PORT
User: 'user'
Password: 'password'
Database: 'db'
Url: 'postgres://user:password@IP_ADDRESS:PORT/db'
이 DB의 설정을 참조하여 Laavel 측의 설정 파일(.env)을 다시 작성합니다.
.envDB_CONNECTION=pgsql
DB_HOST=IP_ADDRESS
DB_DATABASE=db
DB_USERNAME=user
DB_PASSWORD=password
또한 Laavel 측에서 config/database를 사용합니다.php에서 사용하는 포트를 PORT
로 변경합니다.엔비DB_HOST=IP_ADDRESS:PORT
등도 움직이지 않도록 주의하세요.
DB 설정 확인
이미 DB가 있는 경우 아래 명령을 통해 같은 항목을 확인할 수 있다
DB 목록 가져오기
ssh -t [email protected] postgresql:info
DB 세부 정보 가져오기
ssh -t [email protected] postgresql:info <DB name>
DB에서 초기 값 설정하기
Laavel의 Seeder 클래스를 작성하는 경우 artisan 명령을 사용하여 초기 값을 설정할 수 있습니다.
Seeder급 제작 방법: Dokku - The smallest PaaS implementation you've ever seenssh -t [email protected] run <App name> "php artisan migrate:refresh --seed"
Rolled back: 2014_10_12_100000_create_password_resets_table
Rolled back: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table
Seeded: UsersTableSeeder
Connection to your.dokku.domain closed.
초기 값이 올바르게 설정되었는지 확인
PHP artisan을 사용하여 DB에 등록된 사용자 확인ssh -t [email protected] run <App name> "php artisan tinker \<App name>\User::all()"
초기 값이 정상적으로 설정되어 있으면 이 값이 출력됩니다.
기타 설정
기본적으로 루트의 URL은 index.php
, your입니다.domain.index.php에 접근하기를 원하기 때문에nginx의 설정을 바꿨습니다.
이러한 Dokku와 연관된 설정 파일은 Database: Seeding - Laravel - The PHP Framework For Web Artisans입니다.
Reference
이 문제에 관하여(Dokku에서 Laavel5 프로젝트 설계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kadoyau/items/5cddcf2f457b115c2fe1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
git push dokku <deploy branch>
(略)
-----> Node.js app detected
https://github.com/heroku/heroku-buildpack-php
remote: /tmp/buildpack3k4mD/bin/compile: line 270: /app/bin/jq: No such file or directory
remote: ! Script error in /tmp/buildpack3k4mD/bin/compile on or near line 270
(略)
-----> Preparing runtime environment...
NOTICE: No Procfile, using 'web: vendor/bin/heroku-php-apache2'.
Using release configuration from last framework (PHP).
-----> Discovering process types
Procfile declares types -> web
-----> Releasing <App name>...
-----> Deploying <App name>...
-----> Running pre-flight checks
For more efficient zero downtime deployments, create a file CHECKS.
See http://progrium.viewdocs.io/dokku/checks-examples.md for examples
CHECKS file not found in container: Running simple container check...
-----> Waiting for 10 seconds ...
remote: App container failed to start!!
=====> <App name> container output:
No dyno detected; using defaults for 1X...
4 processes at 128MB memory limit.
Starting php-fpm...
Starting httpd...
=====> end <App name> container output
remote: /usr/local/bin/dokku: 52 行: 18907 強制終了 dokku deploy "$APP"
(略)
WAIT=5
ssh [email protected] config:set <アプリ名> ENV=development
ssh [email protected] postgresql:create <App name>
PostgreSQL container created: postgresql/<App name>
Host: IP_ADDRESS
Port: PORT
User: 'user'
Password: 'password'
Database: 'db'
Url: 'postgres://user:password@IP_ADDRESS:PORT/db'
DB_CONNECTION=pgsql
DB_HOST=IP_ADDRESS
DB_DATABASE=db
DB_USERNAME=user
DB_PASSWORD=password
ssh -t [email protected] postgresql:info
ssh -t [email protected] postgresql:info <DB name>
ssh -t [email protected] run <App name> "php artisan migrate:refresh --seed"
Rolled back: 2014_10_12_100000_create_password_resets_table
Rolled back: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table
Seeded: UsersTableSeeder
Connection to your.dokku.domain closed.
ssh -t [email protected] run <App name> "php artisan tinker \<App name>\User::all()"
Reference
이 문제에 관하여(Dokku에서 Laavel5 프로젝트 설계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kadoyau/items/5cddcf2f457b115c2fe1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)