React ํ๊ฒฝ๋ณ์ ๋ฑ๋ก
๊ธฐ์กด ๊ฐ๋ฐ ์
๊ฐ๋ฐ ํ๊ฒฝ์์ React๋ฅผ ํ๋ก ํธ๋ก ์ฌ์ฉํ ๋, ์ฝ๋ ์ฌ์์์ ํ๊ฒฝ๋ณ์๋ฅผ ์ด์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
-
์ต์์ ํด๋์ .env ํ์ผ์ ๋ง๋ ๋ค.
-
.env ํ์ผ์
REACT_APP์ผ๋ก ์์ํ๋ ํ๊ฒฝ๋ณ์๋ฅผ ์ ์ํ๋ค.REACT_APP_ADMIN_KEY=hi -
์ฝ๋ ์์์
process.env.REACT_APP_ADMIN_KEY์ ๊ฐ์ ํํ๋ก ์ฌ์ฉํ๋ค.
์ด๋ ๊ฒ ๊ฐํธํ๊ฒ ์ด์ฉํ ์ ์๋ค!
๋ฐฐํฌ ์
ํ์ง๋ง ์๋น์ค๋ฅผ ์ํ build ํ์๋ ํ๊ฒฝ๋ณ์๋ฅผ ์ฝ์ด๋ค์ผ ์ ์๊ธฐ ๋๋ฌธ์ build์ ๋์์ build์ ๋ํ ๋งค๊ฐ๋ณ์(argument)๋ก ํ๊ฒฝ๋ณ์๋ฅผ ์ธํ ํด์ฃผ์ด์ผํ๋ค.
NERA๋ github action์์ docker/build-push-action@v1.1.0 ์ด๋ผ๋ action์ ์ด์ฉํด _Docker file_์ ํตํด์ build๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ํ๊ฒฝ์ ๊ธฐ์ค์ผ๋ก ์ค๋ช ํ๊ฒ ๋ค!
-
REACT ๊ด๋ จ ํ๊ฒฝ๋ณ์๋ฅผ git repository์ secret์ผ๋ก ๋ฑ๋กํ๋ค.
Settings -> Secrets ์์ ๋ฑ๋กํ ์ ์๋ค.
-
github action์์ build_args๋ฅผ ์ถ๊ฐํด์ค๋ค. (docker/build-push-action ๋ฒ์ ์ ๋ฐ๋ผ ๊ธฐ์ฌ ๋ฐฉ๋ฒ์ด ๋ค๋ฅด๋ฏ๋ก ์ฃผ์!)
steps: - uses: actions/checkout@v2 - name: Build and push Docker images uses: docker/build-push-action@v1.1.0 with: username: ${{ secrets.DOCKER_ID }} password: ${{ secrets.DOCKER_PW }} repository: csuos/nera build_args: REACT_APP_ADMIN_KEY=${{ secrets.REACT_APP_ADMIN_KEY }} tag_with_ref: true # optional tag_with_sha: true tags: latest cache_froms: csuos/nera:latest # optional push: ${{ startsWith(secrets.DOCKER_ID, 'csuos') }}์์ build_args์ ์๋
REAACT_APP_ADMIN_KEY์ฒ๋ผ ์ธํ ํด์ค๋ค.์ฌ๊ธฐ์ ๊ทธ๋ฅ github action์ ๋๋ฆฌ๊ฒ ๋๋ฉด
[Warning] One or more build-args [ํ๊ฒฝ๋ณ์] were not consumed์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฌ๋ค. ์ด๋ build๋ฅผ ์ฒ๋ฆฌํ๋ Docker file์ ARG(๋งค๊ฐ๋ณ์)๋ฅผ ์ ์ํด์ฃผ์ง ์์์์ด๋ค. ๊ธฐ์กด์ Docker์์ ์ ๊ณตํ๋ ARG๊ฐ ์๋๋ผ๋ฉด ์ฌ์ฉํ ๊ฒ์ด๋ผ๊ณ ๋ฏธ๋ฆฌ ์ ์ธํด๋์ด์ผํ๋ค. -
Docker file ์์
FROM node:12 as builder ARG REACT_APP_ADMIN_KEY ENV REACT_APP_ADMIN_KEY=$REACT_APP_ADMIN_KEY WORKDIR /usr/src/app COPY ./page/package.json ./ RUN yarn COPY ./page/. . RUN yarn build FROM node:12 WORKDIR /usr/src/app COPY ./server/package.json ./ RUN yarn COPY --from=builder /usr/src/app/build /usr/src/app/build COPY ./server/. . EXPOSE 3000 CMD [ "yarn", "start" ]๊ธฐ์กด์ Docker file์์ ARG์ ENV ๋ผ์ธ๋ง ์ถ๊ฐํด์ฃผ์๋ค. ARG๋ก
REACT_APP_ADMIN_KEY๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ณ ์ด ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์์ ํ๊ฒฝ๋ณ์์ ๋ฑ๋กํ ๊ฒ์ด๋ค.
์ฐธ๊ณ ๋ก ์๋ฒ๋ ๊ณ์ node๋ฅผ ์ด์ฉํด์ ๋์๊ฐ๊ณ ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ํด๋ผ์ฐ๋ ์์์ OS ํ๊ฒฝ๋ณ์๋ก ํ๊ฒฝ๋ณ์๋ฅผ ์ธํ
ํด์ฃผ๋ฉด ์ฝ๋์์์ process.env๋ก ๋ฐ์์์ ์ฌ์ฉํ ์ ์๋ค.
์์ธํ ์ฝ๋๋ https://github.com/CSUOS/nera๋ฅผ ์ฐธ๊ณ ํ์ :)
'์น (WEB) > ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| DeepLink๋? :: ์๋งํฌ, ๋ฅ๋งํฌ, ๋ํผ๋ ๋ฅ๋งํฌ (4) | 2021.07.10 |
|---|---|
| JavaScript ๋์ ์๋ฆฌ :: ๋ฐํ์ ๊ตฌ์ฑ๊ณผ ๋น๋๊ธฐ ๋์ (feat. ๋น๋๊ธฐ ์ฝ๋ฐฑ) (0) | 2021.04.01 |
| Ajax์์ ํ์ํ SOP(Same Origin Policy), CORS(Cross-Origin Resource Sharing) ์ ๋ฆฌ (0) | 2021.02.06 |
| Ajax(Asynchronous Javascript And Xml) (0) | 2021.02.06 |
| [ECMAScript] ES5, ES6 ๋ฌธ๋ฒ ์ ๋ฆฌ (0) | 2021.02.03 |
Comment