반응형
개요
docker-compose.yml
파일에서 postgresql 도 같이 묶어서 개발 환경을 손쉽게 구축하기 쉽게 구현하였지만, 실제 프로덕션 환경에서는 외부에 존재하는 postgresql에 접근해야 한다.
이에 따라, 로컬에서도 외부 postgresql에 접근하여 테스트가 가능하게 하고, prod env를 따로 설정하여 배포를 손쉽게 처리하기 위하여 Enviroment 관리를 진행한다.
Environment 종류
기본 설정된 Env 파일들은 다음과 같습니다.
해당 파일들은 ignore 대상이며, git repository 에서 변수로 관리 됩니다.
- .env
- .env.dev
- .env.local
- .env.prod
사용 Environment 변경
기본적으로 아무런 옵션을 주지 않으면 .env
파일을 Enviroment 로 처리합니다.docker-compose up
시 env file 변경에는 --env-file
옵션을 사용 합니다.php artisan
시 env file 변경에는 -env
옵션을 사용 합니다.
# docker compose env file change sample
$ docker-compose --env-file .env.prod up
# php artisan env file change sample
$ php artisan migrate:fresh --seed -env=prod
docker-compose-prod.yml
마지막으로, prod 용 docker compose 파일을 생성하고 pgsql 부분을 제거 합니다.
생성된 compose 파일은 다음과 같은 명령어로 실행 됩니다.
$ docker compose -f docker-compose-prod.yml up
services:
laravel.prod:
build:
context: ./vendor/laravel/sail/runtimes/8.2
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.2/app
extra_hosts:
- 'host.docker.internal:host-gateway'
ports:
- '${APP_PORT:-80}:80'
- '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
IGNITION_LOCAL_SITES_PATH: '${PWD}'
volumes:
- '.:/var/www/html'
networks:
- sail
graphql-engine:
image: hasura/graphql-engine:v2.35.0
ports:
- '8080:8080'
restart: always
environment:
## postgres database to store Hasura metadata
HASURA_GRAPHQL_METADATA_DATABASE_URL: postgres://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT:-5432}/${DB_DATABASE}
HASURA_GRAPHQL_DATABASE_URL: postgres://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT:-5432}/${DB_DATABASE}
## enable the console served by server
HASURA_GRAPHQL_ENABLE_CONSOLE: 'true' # set to "false" to disable console
## enable debugging mode. It is recommended to disable this in production
HASURA_GRAPHQL_DEV_MODE: 'true'
HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log
## uncomment next line to set an admin secret
# HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_GRAPHQL_ADMIN_SECRET}
# HASURA_GRAPHQL_UNAUTHORIZED_ROLE: public
volumes:
- './hasura/metadata:/hasura-metadata'
networks:
- sail
networks:
sail:
driver: bridge
volumes:
sail-pgsql:
driver: local
반응형
'Programming' 카테고리의 다른 글
Laravel + hasura + postgresql - lighthouse, playground 설정 (0) | 2023.12.05 |
---|---|
Laravel + hasura + postgresql - 기본 설정 (0) | 2023.12.05 |
Oauth2.0 + API Server(Laravel Sanctum) + 통합인증 구현 (1) | 2023.08.30 |
[PHP Laravel] 대용량 트래픽 관련하여.. + Chat GPT (0) | 2023.04.02 |
[Next.js] localstorage is not defined (0) | 2023.03.25 |