Synology NAS
.env 환경파일 처리방법
#방법 1: NAS에 사전 배포방법
NAS 서버의 애플리케이션 디렉토리($APP_DIR
)에 .env
파일을 미리 준비해 놓고, 배포 시 덮어쓰지 않도록 설정합니다.
-
구현 방법:
-
.env
파일을 NAS 서버의$APP_DIR
에 사전 배치. -
rsync
실행 시.env
파일을 무시:rsync -av --delete --exclude '.env' "$TMP_DIR/" "$APP_DIR/"
-
기존
.env
파일은 그대로 유지되며, 다른 파일만 업데이트됩니다.
-
#방법 2: GitHub Actions로 전송하기
GitHub Actions에서 .env
파일을 안전하게 NAS로 전달합니다. 이때, .env
파일은 GitHub Secrets에 저장된 값으로 생성합니다.
-
구현 방법:
- GitHub Secrets에
.env
파일 내용을 저장 (예:LARAVEL_ENV
키 사용). - GitHub Actions에서
.env
파일 생성 후 NAS로 전송:
- GitHub Secrets에
- name: Create .env file
run: |
echo "${{ secrets.LARAVEL_ENV }}" > .env
scp .env userid@NAS_IP:/volume1/docker/obsidian.yaver.com/.env
#방법 3: 배포 스크립트에서 동적으로 생성
배포 스크립트(deploy.sh
)에서 .env
파일을 동적으로 생성하거나 필요한 값을 환경 변수로 받아 작성합니다.
-
구현 방법:
-
deploy.sh
에서.env
파일 생성:
-
echo "APP_NAME=Laravel" > "$APP_DIR/.env"
echo "APP_ENV=production" >> "$APP_DIR/.env"
echo "APP_KEY=${APP_KEY}" >> "$APP_DIR/.env"
echo "DB_CONNECTION=mysql" >> "$APP_DIR/.env"
echo "DB_HOST=${DB_HOST}" >> "$APP_DIR/.env"
echo "DB_PORT=3306" >> "$APP_DIR/.env"
echo "DB_DATABASE=${DB_DATABASE}" >> "$APP_DIR/.env"
echo "DB_USERNAME=${DB_USERNAME}" >> "$APP_DIR/.env"
echo "DB_PASSWORD=${DB_PASSWORD}" >> "$APP_DIR/.env"
2. 환경 변수 값은 GitHub Secrets 또는 NAS 환경 변수에서 받아 사용.
#방법 4: .env
파일 템플릿 사용
.env.example
파일을 GitHub에 포함시키고, 배포 시 이를 복사하여 .env
파일로 생성합니다.
-
구현 방법:
-
.env.example
파일 준비. - 배포 스크립트에서
.env
파일 생성:
-
cp "$APP_DIR/.env.example" "$APP_DIR/.env"
sed -i 's/APP_ENV=local/APP_ENV=production/' "$APP_DIR/.env"
sed -i 's/DB_HOST=127.0.0.1/DB_HOST=${DB_HOST}/' "$APP_DIR/.env"
3. 특정 변수는 배포 환경에 맞게 수정.