doctl 및 AppSpec YAML 파일을 통해 Laravel 어플리케이션을 Digital Ocean 어플리케이션 플랫폼에 배포
14895 단어 digitaloceandohackathonlaravelphp
농담은 그만두고, 왜 UI 대신 spec YAML 파일을 사용해서 응용 프로그램을 배치하는 것을 더 좋아하는지 설명할 수 있는 몇 가지 이유가 있다.만약 응용 프로그램이 많은 구성 요소, 많은 환경 변수를 설정해야 하거나 buildpack 정확하게 감지되지 않으면 app spec 파일로 응용 프로그램의 배치 방식을 정의할 수 있습니다.
내가 처음에 이 노선을 선택한 이유는buildpack에서 나의 프로그램을 노드 프로그램으로 감지할 수 없기 때문이다. 왜냐하면 새로운 Laravel 프로그램은 기본적으로
package.json
파일을 첨부하기 때문이다.다른 사람들이 비슷한 질문을 할 수 있기 때문에, 나는 댓글을 만들어서 나에게 유용한 것을 공유하기로 결정했다.내 앱은 상당히 간단한 Laravel 8 앱으로 네가 직접 개발할 수 있다this tutorial series on DigitalOcean.이것은 링크 로그인 페이지입니다.다른 점은 새 프로젝트는 단순화된 버전으로 제한된 영역이나 사용자 등록이 없고 순수한 Laravel에 기반을 두고 있으며 Bulma CSS를 한 페이지의 전단으로 사용한다는 점이다.링크는 CLI의 Artisan 명령을 통해 관리됩니다.
이 프로젝트는 매우 간단합니다. NPM/Tailwind/etc를 사용하지 않기 때문에 제가 하는 첫 번째 일은 저장소에서 포함된
package.json
파일을 삭제하는 것입니다. 환경이 PHP로 설정되어 있어도 이 파일은buildpack에서 가져와서 오류가 발생합니다. 왜냐하면 나머지 구성 요소를 제대로 설정하지 않았기 때문입니다. npm install
(필요 없습니다.)이 파일을 삭제하면 UI를 통해 빌드를 완료할 수 있지만 환경 변수와 마이그레이션을 실행하는 방법에 여전히 문제가 있습니다.여러 차례의 시도와 대량의 실험을 통해 저는 응용 프로그램 규범 파일을 통해 모든 일을 완벽하게 완성할 수 있습니다. 저는 잠시 후에 여러분과 공유할 것입니다.우선, 나는 약간의 관찰을 하고 싶다.
PostgreSQL을 더 좋아합니다. 데이터베이스를 개발하든 위탁 데이터베이스를 사용하든 PostgreSQL을 사용하면 번거로움을 줄일 수 있습니다.일부 Laravel 프로그램에서 키 사용과 이전을 실행할 때 테이블을 만드는 방법에 대한 문제가 있습니다. known issuesLaravel + Jetstream 응용 프로그램을 배치하려고 시도했을 때 이 문제가 발생했습니다. 이 문제는 Laravel Passport 패키지에서 나온 것입니다.
환경 설정:
environment_slug
를 php
로 설정하는 것이 매우 중요하다.POST_DEPLOY
형식의 작업을 만들어야 합니다.환경 변수 설정: 응용 프로그램 저장소에
.env
파일을 포함하지 말고 UI나 app spec 파일을 통해 환경 변수를 설정해야 합니다.사용자 인터페이스는 나중에 일부 값을 변경할 때 매우 편리하지만, 처음에 모든 값을 설정하는 것은 매우 힘들고 오류가 발생하기 쉽다.응용 프로그램 규범은 이런 초기 설정에 매우 적합하다.정의된 ENV 변수 목록을 반복해야 합니다. 이것은 작업이 하나의 단독 구성 요소로서 하나의 단독 환경에서 작업하기 때문에 변수를 설정해야 합니다.내 동료는 이 상황이 곧 바뀔 것이라고 말했다. ENV 변수는 전 세계적으로 사용할 수 있지만, 이 기능은 아직 jobs
도구에 도달하지 못했다.현재, 우리는 모든 구성 요소의 변수를 반복해야 한다.됐어, 충분히 설명했어.이 파일은 내 응용 프로그램 사양명세 파일이므로 다음과 같은 경우에도 사용할 수 있기를 바랍니다.
databases:
- engine: PG
name: db
num_nodes: 1
size: db-s-dev-database
version: "12"
name: landing-laravel
region: ams
services:
- environment_slug: php
run_command: heroku-php-apache2 public/
envs:
- key: APP_NAME
scope: RUN_TIME
value: Landing_Laravel
- key: APP_ENV
scope: RUN_TIME
value: dev
- key: APP_KEY
scope: RUN_TIME
value: base64:ffYPNP8kPeQDf8gE/qh3kWjk59p6gFY66kCKhhKUa2w=
- key: APP_DEBUG
scope: RUN_TIME
value: "1"
- key: APP_URL
scope: RUN_TIME
value: ${APP_URL}
- key: DATABASE_URL
scope: RUN_TIME
value: ${db.DATABASE_URL}
- key: DB_CONNECTION
scope: RUN_TIME
value: pgsql
- key: DB_HOST
scope: RUN_TIME
value: ${db.HOSTNAME}
- key: DB_PORT
scope: RUN_TIME
value: ${db.PORT}
- key: DB_DATABASE
scope: RUN_TIME
value: ${db.DATABASE}
- key: DB_USERNAME
scope: RUN_TIME
value: ${db.USERNAME}
- key: DB_PASSWORD
scope: RUN_TIME
value: ${db.PASSWORD}
github:
branch: main
deploy_on_push: true
repo: do-community/landing-laravel
http_port: 8080
instance_count: 1
instance_size_slug: basic-xs
name: landing-laravel
routes:
- path: /
jobs:
- name: migrate
kind: POST_DEPLOY
github:
repo: do-community/landing-laravel
branch: main
deploy_on_push: true
run_command: php artisan migrate --seed
envs:
- key: APP_NAME
scope: RUN_TIME
value: Landing_Laravel
- key: APP_ENV
scope: RUN_TIME
value: dev
- key: APP_KEY
scope: RUN_TIME
value: base64:ffYPNP8kPeQDf8gE/qh3kWjk59p6gFY66kCKhhKUa2w=
- key: APP_DEBUG
scope: RUN_TIME
value: "1"
- key: APP_URL
scope: RUN_TIME
value: ${APP_URL}
- key: DATABASE_URL
scope: RUN_TIME
value: ${db.DATABASE_URL}
- key: DB_CONNECTION
scope: RUN_TIME
value: pgsql
- key: DB_HOST
scope: RUN_TIME
value: ${db.HOSTNAME}
- key: DB_PORT
scope: RUN_TIME
value: ${db.PORT}
- key: DB_DATABASE
scope: RUN_TIME
value: ${db.DATABASE}
- key: DB_USERNAME
scope: RUN_TIME
value: ${db.USERNAME}
- key: DB_PASSWORD
scope: RUN_TIME
value: ${db.PASSWORD}
이 규범에 따라 프로그램을 배치하려면 먼저 두 구성 요소의 doctl
값github.repo
과 services
아래에서 Laravel 응용 프로그램 저장소를 가리키고 jobs
을 자신의 이름으로 변경해야 합니다.다음 작업을 수행할 수 있습니다.doctl apps create --spec <path-to-spec>
다음과 같은 출력이 표시됩니다.Notice: App created
ID Spec Name Default Ingress Active Deployment ID In Progress Deployment ID Created At Updated At
371e211e-1ad1-4f23-b0d0-aac838cf922f landing-laravel 2020-12-23 12:25:10.25023846 +0000 UTC 2020-12-23 12:25:10.25023846 +0000 UTC
그런 다음 애플리케이션 플랫폼 대시보드로 이동하여 구축 프로세스를 시작할 수 있습니다.doctl
아직 제가 제출한 내용은 아니지만 이 정보를 최대한 빨리 여러분과 공유하는 것이 중요하다고 생각합니다. Laravel 앱을 배치하려고 할 때 문제가 있는 모든 사람을 도울 수 있습니다.도움이 되었으면 좋겠어요!건배, 다음에 봐요. 제 의견이 있었으면 좋겠어요.
Reference
이 문제에 관하여(doctl 및 AppSpec YAML 파일을 통해 Laravel 어플리케이션을 Digital Ocean 어플리케이션 플랫폼에 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/erikaheidi/deploying-a-laravel-application-to-digitalocean-app-platform-via-doctl-with-an-app-spec-yaml-file-4dib텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)