Docker를 써서 Vue 웹앱 개발하기

이전 단계에서는 프로젝트를 만들어서 그 이후에 도커파일을 하나 추가한 후, 이미지를 빌드하는 방식으로 구현했습니다. Vue 또한 그렇게 구현할 수 있습니다.

1️⃣ Vue 프로젝트 생성

이미지를 빌드하기 전에 기본 Vue프로젝트가 필요하다. 우선 node.js 18버전을 설치해준다.

# 필요하다면, 기존에 있던 node.js(18버전 이하) 삭제
sudo apt-get remove -y nodejs npm

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

그리고 vue프로젝트를 생성해준다.

cd ~/workspace
mkdir -p my-vue-app
cd my-vue-app
npx @vue/cli create .

( Vue3과 Vue2중에 선택하라고 나오는데 Vue2를 골라주자. )

그러면 아래와 같이 프로젝트 폴더 아래에 node_modules/, public/, src/ 폴더가 생성된다.

2️⃣ Dockerfile 작성

프로젝트(my-vue-app) 폴더 아래에 도커 파일을 만들고 편집으로 들어가 아래 내용을 추가한다.

# 1. Node.js 18을 사용
FROM node:18

# 2. 작업 디렉터리 설정
WORKDIR /app

# 3. package.json과 package-lock.json 복사
COPY package*.json ./

# 4. 의존성 설치
RUN npm install

# 5. 소스 코드 복사
COPY . .

# 6. Vue 개발 서버 실행
EXPOSE 8080
CMD ["npm", "run", "serve"]

결과는 아래와 같다.

3️⃣ Docker 이미지 빌드

docker build -t my-vue-app .

결과는 아래와 같다.

  • 이제 my-react-app 이라는 이름의 이미지가 만들어졌는지 확인해보자.

4️⃣ 컨테이너 실행

docker run -it --rm -p 3000:8080 -v $(pwd):/app --workdir /app --name  vue_container node:18 bash -c "npm install && npm run serve -- --host 0.0.0.0"

위 코드에서 3000포트와 8080포트는 어떤 의미냐면, 아웃바운드, 즉 외부에서는 3000번으로 들어오면, 브릿지를 통해 인바운드, 즉 내부에서는 가상서버의 8080포트로 접속이 된다는 뜻이다.

이 글이 도움이 되었나요?

신고하기
0분 전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.