728x90
반응형
1. env 수정
ex) /next.config.js
/** @type {import('next').NextConfig} */
const path = require('path');
const withImages = require('next-images');
module.exports = {
reactStrictMode: true,
async rewrites() {
if (process.env.NODE_ENV === "production") {
return [
{
source: process.env.PRODUCTION_JAVA_SERVER_PATH,
destination: process.env.PRODUCTION_JAVA_SERVER_URL,
}
];
} else {
return [
{
source: process.env.JAVA_SERVER_PATH,
destination: process.env.JAVA_SERVER_URL,
}
];
}
},
};
/.env.local
NODE_ENV = 'development'
PRODUCTION_JAVA_SERVER_PATH = '/java/:path*'
PRODUCTION_JAVA_SERVER_URL = 'http://사용하는 IP 주소:8083/:path*'
JAVA_SERVER_PATH = '/java/:path*'
JAVA_SERVER_URL = 'http://localhost:8083/:path*'
2. Dockerfile 생성
프로젝트 루트 경로에 만들어준다.
/Dockerfile
# 위에서 도커 허브 node 이미지를 기반으로 로컬로 다운로드 및 캐싱 되었기 때문에 이미지를 가져올 수 있다.
FROM node:18.4.0
# 만약 컨테이너 안의 이미지의 경로가 /app 이런식으로 되어있다면 작업할 div 경로를 설정할 수도 있다.
# 설정해주면 COPY 의 두번째 경로를 ./ 이것으로 했을 때 자동으로 /app 경로가 된다.
WORKDIR /app
# package.json 파일을 복사한다. 만약 다시 빌드할 때 변경사항이 없을 경우 npm install까지 그냥 넘어간다.
COPY package.json /app
# 이미지를 받으면 npm install을 자동으로 해줌
RUN npm install
# 어떤 파일이 이미지에 들어가야 하는지
# 첫 번째 .은 이 프로젝트의 모든 폴더 및 파일들 (Dockerfile을 제외한)
# 두 번째 .은 파일을 저장할 컨테이너 내부 경로 (ex /app)
COPY . /app
# 배포환경으로 설정
ENV NODE_ENV=production
RUN npm run build
# 도케에게 우리가 서버를 실행할 포트를 말해준다.
EXPOSE 3000
# 이미지가 생성될 때 실행되지 않고 컨테이너가 실행될 때 수행하는 명령어
CMD ["npm","start"]
당연한 말이지만 개발 서버와 node 버전을 맞춰주어야 한다.
3. dockerignore 생성
/.dockerignore
.node_modules
.next
4. next.config.js 수정
module.exports = {
output: 'standalone'
}
5. 이미지 빌드
$ docker build -t 도커허브아이디/web-client:버전정보 .
web_client 는 임의로 제가 지은 이름입니다.
docker 프로그램에서 확인할 수도 있다.
혹시 맥북에서 빌드하고 linux/amd64 서버에 배포할 예정이라면
docker buildx build --platform=linux/amd64 -t 도커허브아이디/web_client:버전정보 .
6. Dockerhub Repository 생성
7. 도커허브 업로드
# 업로드
docker push 도커허브아이디/web_client
Server
1. 인스턴스 서버에 도커 설치
$ sudo wget -qO- http://get.docker.com/ | sh
2. 인스턴스 서버에서 도커 로그인
$ docker login
3. 도커 시작
$ sudo systemctl start docker
4. 도커허브에서 이미지 pull
$ docker pull 도커허브아이디/web_client:버전정보
5. 이미지 id 확인
$ docker images
6. 컨테이너 실행
$ docker run -p 80:3000 -d --rm 도커허브아이디/web_client
728x90
반응형
'DevOps > Docker' 카테고리의 다른 글
Docker | Multi-Stage build with Spring (0) | 2023.03.31 |
---|---|
Docker | Spring Boot, Next.js 배포 | 인스턴스에 배포하기 (0) | 2022.11.03 |
Docker | Spring Boot, Next.js 배포 | Spring boot 배포하기 (0) | 2022.11.03 |
Docker | Spring Boot, Next.js 배포 | Spring Boot 배포하기 (0) | 2022.09.22 |
Docker | Docker-Compose (4) | 2022.06.14 |