일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 디자인 패턴
- azure
- Secret
- MariaDB
- 다형성
- dfs
- netlify
- bfs
- GOF
- mock
- 캡슐화
- 서브셋폰트
- package
- 객체지향
- CSS
- npm
- Java
- 클라우드
- DP
- 메모이제이션
- PostgreSQL
- 동적계획법
- process.env
- 상속
- git
- AOP
- Solid
- github
- dotenv
- 추상화
- Today
- Total
이것저것 해보기🌼
dotenv로 .env 설정 및 Github Actions에 secret 추가하기 (MariaDB 접속정보) 본문
process.env란?
Node.js에서 환경변수 접근 방법
별도로 무언가를 설치하지 않아도 이용할 수 있다.
https://www.daleseo.com/js-node-process-env/
dotenv
dotenv는 process.env를 쉽게 관리하기 위한 모듈이다. (매번 node 실행시마다 변수를 일일히 치기 귀찮)
https://www.npmjs.com/package/dotenv#%EF%B8%8F-usage
npm i dotenv
Maria DB 접속 정보에 dotenv 적용하기
MariaDB 접속 정보가 하드코딩으로 들어있으면 여러 보안상 문제가 생길수 있다.
DB 커넥션을 맺는 아래와 같은 코드가 있다고 치자.
당연히 host 및 계정 정보는 빼고 배포해야하고 별도로 안전한 장소에 저장해야 한다.
import maria from 'mysql'
const conn = maria.createConnection({
host: [my db host],
port: 3306,
user: [my db id],
password: [my db password],
database: [my database],
})
export default conn
.env 파일을 만들고, 그 안에 해당 정보들을 입력한다.
DB_HOST=[my db url]
DB_PORT=3306
DB_USER=[my user]
DB_PASSWORD=[my password]
DB_NAME=[my db]
이제 이 정보들을 변수로 쉽게 가져올수 있다.
/* eslint-disable no-undef */
import maria from 'mysql'
import 'dotenv/config'
const conn = maria.createConnection({
host: process.env.DB_HOST,
port: process.env.DB_PORT,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
})
export default conn
주의
.env 파일을 루트 디렉터리에 있지 않거나, prod/dev 별로 별도의 파일로 관리한다면 경로를 명시해주어야함
dotenv.config({ path: '.env.local' });
그리고 .env 파일은 .gitignore 에 등록해야한다.
참고
나는 ES Module을 사용해서 import로 가져오는 방법만 적었는데, CommonJS는 아래 포스팅을 참고하자.
https://www.daleseo.com/js-dotenv/
Github Actions 에서 .env 정보 가져오기
Github Actions 방법으로 배포를 하고 있다면, 저장소에는 .env 파일이 없으므로, 정상적으로 process.env를 가져올 수 없다. (gitignore 되므로)
그래서 Github에서는 Secret 으로 이런 환경변수를 저장할수 있는 기능을 지원한다.
설정 위치
프로젝트 repository 설정 > Secrets and variables > Actions
여기에 필요한 process.env 를 모두 등록한다.
이제 이 시크릿을 배포 스크립트 실행시 .env 파일에 등록해서 쓸수 있게 만들면 된다.
Workflow 에서 .env 파일 생성 과정 추가하기
.env 파일에 내용을 쓰는 명령어는 다음과 같다.
echo "DB_HOST=${{ secrets.DB_HOST }}" >> .env
내가 필요한 모든 Secret을 .env 파일에 쓰는 과정을 추가해주면 된다. (.env setting 단계 참고)
name: Deploy to Firebase Hosting on merge
on:
push:
branches:
- main
jobs:
build_and_deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: .env setting
run: |
echo "DB_HOST=${{ secrets.DB_HOST }}" >> .env
echo "DB_PORT=${{ secrets.DB_PORT }}" >> .env
echo "DB_USER=${{ secrets.DB_USER }}" >> .env
echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> .env
echo "DB_NAME=${{ secrets.DB_NAME }}" >> .env
- name: install npm dependencies and run
run: cd backend && npm install && npm run server
Github Action에서 환경변수가 잘 등록되는지 확인해본다.
끝!
참고
'프로젝트 > 참나무농원' 카테고리의 다른 글
puppeteer : Could not find Chrome 에러 해결 (0) | 2024.10.04 |
---|---|
Firebase Functions 시작 및 배포 (0) | 2024.09.20 |
크롤링 모듈 선택 - axios+cheerio / Selenium / beautifulsoup / scrapy / puppeteer (0) | 2024.08.28 |
[React] firebase 회원가입/로그인 구현하기 (이메일, 비밀번호 사용) (0) | 2024.06.23 |
firebase로 웹 어플리케이션 배포하기 (0) | 2024.06.23 |