Node.js
# Node.js 버전 확인
➜ node -v
v20.9.0
# v20.9.0 가 설치되어 있지 않다면
➜ nvm install 20.9.0
# v20.9.0 를 사용하고 있지 않다면
➜ nvm use 20.9.0
# Node.js 버전 다시 확인
➜ node -v
v20.9.0
npm
# npm 버전 확인
➜ npm -v
10.2.1
# 최신 버전 npm 으로 업그레이드
➜ npm i [email protected] -g
# npm 버전 다시 확인
➜ npm -v
10.2.1
Create Project Root
➜ mkdir micro-frontends-with-proxy
➜ cd micro-frontends-with-proxy
➜ corepack enable
➜ pnpm init
➜ corepack use [email protected]
➜ pnpm add turbo -D
workspace 설정하기
# pnpm-workspace.yaml
packages:
- "teams/*"
- "apps/*"
워크스페이스(팀 서버) 생성하기
➜ mkdir apps
➜ cd apps
➜ mkdir nginx-app
➜ cd nginx-app
➜ pnpm init
➜ cd ...
➜ pnpm i
nginx-app 만들기
upstream team_home {
server host.docker.internal:3001;
}
upstream team_jobs {
server host.docker.internal:3002;
}
upstream team_network {
server host.docker.internal:3003;
}
server {
listen 3000;
location /network/ {
proxy_pass http://team_network;
}
location /jobs/ {
proxy_pass http://team_jobs;
}
location / {
proxy_pass http://team_home;
}
}
FROM nginx:1.25.3-alpine
COPY proxy-server.conf /etc/nginx/conf.d/proxy-server.conf
EXPOSE 3000
{
"name": "nginx-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "docker build -t nginx-app .",
"dev": "docker run -p 3000:3000 nginx-app",
"test": "echo \\"Error: no test specified\\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
➜ pnpm --filter nginx-app build
각 팀의 서버 만들기
➜ mkdir teams
➜ pnpm create vite@latest team-home --template vanilla-ts
➜ pnpm create vite@latest team-jobs --template vanilla-ts
➜ pnpm create vite@latest team-network --template vanilla-ts
➜ cd ..
➜ pnpm i
각 팀의 서버 포트 변경하기
➜ mkdir teams
➜ pnpm create vite@latest team-home --template vanilla-ts
➜ pnpm create vite@latest team-jobs --template vanilla-ts
➜ pnpm create vite@latest team-network --template vanilla-ts
➜ cd ..
➜ pnpm i
import { defineConfig } from "vite";
export default defineConfig({
base: "/",
server: {
host: true,
port: 3001,
},
});