Synology NAS

.env 환경파일 처리방법

#방법 1: NAS에 사전 배포방법

NAS 서버의 애플리케이션 디렉토리($APP_DIR)에 .env 파일을 미리 준비해 놓고, 배포 시 덮어쓰지 않도록 설정합니다.

  • 구현 방법:

    1. .env 파일을 NAS 서버의 $APP_DIR에 사전 배치.

    2. rsync 실행 시 .env 파일을 무시:

      rsync -av --delete --exclude '.env' "$TMP_DIR/" "$APP_DIR/"

    3. 기존 .env 파일은 그대로 유지되며, 다른 파일만 업데이트됩니다.

#방법 2: GitHub Actions로 전송하기

GitHub Actions에서 .env 파일을 안전하게 NAS로 전달합니다. 이때, .env 파일은 GitHub Secrets에 저장된 값으로 생성합니다.

  • 구현 방법:

    1. GitHub Secrets에 .env 파일 내용을 저장 (예: LARAVEL_ENV 키 사용).
    2. GitHub Actions에서 .env 파일 생성 후 NAS로 전송:

- 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 파일을 동적으로 생성하거나 필요한 값을 환경 변수로 받아 작성합니다.

  • 구현 방법:

    1. 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 파일로 생성합니다.

  • 구현 방법:
    1. .env.example 파일 준비.
    2. 배포 스크립트에서 .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. 특정 변수는 배포 환경에 맞게 수정.

Pasted image 20250108225439.png