다단계 빌드를 사용하여 Nginx로 React 앱 도커화
Docker은 개발 및 배포 프로세스의 속도를 높이는 데 사용되는 컨테이너화 도구로, 컨테이너화에 가장 널리 사용되는 솔루션입니다.
컨테이너를 사용하면 사용 중인 머신에 관계없이 동일한 환경에서 애플리케이션을 실행하고 개발할 수 있습니다.
- -
Docker-compose는 다중 컨테이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구입니다.
- -
Nginx은 정적 콘텐츠를 제공하는 데 사용할 웹 서버이며 리버스 프록시, 로드 밸런서로 사용할 수 있습니다.
- -
React은 사용자 인터페이스 또는 사용자 인터페이스 구성 요소를 구축하기 위한 오픈 소스 프런트 엔드 JavaScript 라이브러리입니다.
- -
이 튜토리얼은 다단계 빌드를 사용하여 Nginx로 React 앱을 Dockerize하는 방법을 보여줍니다. 특히 다단계 빌드를 사용하여 프로덕션 준비가 된 이미지를 구성하는 데 중점을 둘 것입니다.
코드를 읽기만 원하는 사용자는 아래 GitHub 링크를 찾을 수 있습니다.
bahachammakhi/docker-react-nginx-blog
반응 프로젝트 만들기:
Create react app을 사용하여 반응 프로젝트를 생성합니다.
npx create-react-app react-docker
cd react-docker
- -
도커 파일:
Dockerfile 및 docker-compose.yml 만들기
mkdir nginx
touch Dockerfile docker-compose.yml nginx/nginx.conf
Dockerfile 열기
# build environment
FROM node:13.12.0-alpine as build
WORKDIR /app
COPY . .
RUN yarn
RUN yarn build
# production environment
FROM nginx:stable-alpine
COPY - from=build /app/build /usr/share/nginx/html
COPY - from=build /app/nginx/nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
무슨 일이야?
- -
nginx.conf 열기
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
}
우리는 누군가가 포트 80에 요청을 보낼 때마다 Nginx가 이를 사용할 수 있도록 애플리케이션 정적 파일의 위치를 언급하고 있습니다.
docker-compose.yml 열기
version: "2"
services:
nginx-react:
container_name: ngixreactapp
build:
context: .
dockerfile: Dockerfile
ports:
- 80:80
environment:
NODE_ENV: production
사용할 dockerfile을 언급하고 포트 80을 애플리케이션 포트 80에 매핑하고 몇 가지 환경 변수를 추가하여 앱에 이름을 지정합니다.
컨테이너 실행
docker-compose up
분리 모드에서 컨테이너 실행
docker-compose -d up
Linux를 사용하는 경우 사용하는 모든 docker 명령에 sudo를 사용해야 합니다!
이제 열리면http://localhost/ 다음과 같이 표시됩니다.
- -
Reference
이 문제에 관하여(다단계 빌드를 사용하여 Nginx로 React 앱 도커화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bahachammakhi/dockerizing-a-react-app-with-nginx-using-multi-stage-builds-1nfm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)