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