일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 추상화
- bfs
- 캡슐화
- npm
- CSS
- Solid
- 상속
- 디자인 패턴
- 객체지향
- git
- mock
- MariaDB
- process.env
- 클라우드
- 동적계획법
- 다형성
- DP
- Java
- github
- azure
- package
- 메모이제이션
- netlify
- dfs
- PostgreSQL
- AOP
- Secret
- 서브셋폰트
- GOF
- dotenv
- Today
- Total
이것저것 해보기🌼
dotenv로 .env 설정 및 Github Actions에 secret 추가하기 (MariaDB 접속정보) 본문
process.env란?
Node.js에서 환경변수 접근 방법
별도로 무언가를 설치하지 않아도 이용할 수 있다.
https://www.daleseo.com/js-node-process-env/
Node.js에서 환경 변수 다루기 (process.env)
Engineering Blog by Dale Seo
www.daleseo.com
dotenv
dotenv는 process.env를 쉽게 관리하기 위한 모듈이다. (매번 node 실행시마다 변수를 일일히 치기 귀찮)
https://www.npmjs.com/package/dotenv#%EF%B8%8F-usage
dotenv
Loads environment variables from .env file. Latest version: 16.4.5, last published: 7 months ago. Start using dotenv in your project by running `npm i dotenv`. There are 49146 other projects in the npm registry using dotenv.
www.npmjs.com
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/
dotenv로 환경 변수를 .env 파일로 관리하기
Engineering Blog by Dale Seo
www.daleseo.com
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에서 환경변수가 잘 등록되는지 확인해본다.
끝!
참고
[React] github action 리액트 .env file 추가하기
이전 글 [React] react프로젝트 github action으로 CI/CD 구축하기(aws S3, cloudfront) 문제상황 : .env 파일이 github action으로 S3에 올라가지 않는다 이전 글에서 github action을 통한 클라이언트 배포자동화 과정
s0ojin.tistory.com
'프로젝트 > 참나무농원' 카테고리의 다른 글
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 |