> DevOps/Ubuntu Linux Server 구축 (완)
Ubuntu_Server_08. Jenkins 설정- Front 서버 ( Git + Vue + Nginx + Docker)
Janku
2023. 7. 13. 15:11
- 목표
- 1. Ubuntu Docker 다운로드
- 2. Jenkins > Plugin, Docker Plugin Install
- 3. Jenkins > New Item > Freestyle Project 생성 (API Server Setup 비슷하므로, 스킵. Script 만 추가)
- 4. Dockerfile, Nginx.conf 생성하여, Git Repository 에 넣기
- 5. Jenkins에서 Git Clone을 해서 (이때 위치 > /var/lib/jenkins/workspace), 만들어진 파일을 Docker Build, Run
- 6. Build Now
- Ubuntu Docker 다운로드
# Terminal > Docker Install
## 우분투 시스템 패키지 업데이트
sudo apt-get update
## 필요한 패키지 설치
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
## Docker의 공식 GPG키를 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
## Docker의 공식 apt 저장소를 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
## 시스템 패키지 업데이트
sudo apt-get update
## Docker 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io
- Jenkins > Plugin> Docker Plugin > Install ( 총 4개)
- [Docker, Docker Commons, Docker Pipeline, Docker API] 설치

- Jenkins > New Item > Freestyle Project 생성 (API Server@ Jenkins 비슷하므로, 스킵. Script 만 추가)

## 기본 레이아웃, Execute Shell
if docker ps -a --format "{{.Names}}" | grep "{컨테이너 이름}"; then
echo "Stopping Original..."
docker stop {컨테이너 이름}
else
echo "Not Found."
fi
docker build -t {사용할 이미지 이름} .
docker run -d -p 7001:7001 --name {컨테이너 이름} --rm {사용할 이미지 이름}
=================================예제=================================
## Example
if docker ps -a --format "{{.Names}}" | grep "docker-front-container"; then
echo "Stopping Original..."
docker stop docker-front-container
else
echo "Not Found."
fi
docker build -t docker-front-image .
docker run -d -p 7001:7001 --name docker-front-container --rm docker-front-image
- Dockerfile, Nginx.conf 생성하여, Front - Git Repository 에 넣기
# Dockerfile
# Use an official Node.js runtime as the base image
FROM node:19.6 AS build
# Set the working directory in the container
WORKDIR /app
# Copy package.json and package-lock.json to the working directory
COPY package.json ./
# Install app dependencies
RUN yarn install
# Copy the rest of the project files to the working directory
COPY . .
# Build the Vue app
RUN yarn build
# Use Nginx as the base image
FROM nginx:latest
# Remove the default Nginx configuration
RUN rm -rf /etc/nginx/conf.d/*
# Copy the custom Nginx configuration file
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Copy the built Vue app from the previous build stage to the Nginx web root
COPY --from=build /app/dist /usr/share/nginx/html
# Expose the port that the app will run on
EXPOSE 7001
# Define the command to run the app
CMD ["nginx", "-g", "daemon off;"]
# nginx.conf
server {
listen 7001;
server_name localhost;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
- Jenkins에서 Git Clone을 해서 (이때 위치 > /var/lib/jenkins/workspace), 만들어진 파일을 Docker Build, Run
# 위에서 작업한, Execute Shell
## 이미 가동중 > 종료, 가동 X > skip
if docker ps -a --format "{{.Names}}" | grep "docker-front-container"; then
echo "Stopping Original..."
docker stop docker-front-container
else
echo "Not Found."
fi
## Docker build
docker build -t docker-front-image .
## Docker run @ 7001:7001
docker run -d -p 7001:7001 --name docker-front-container --rm docker-front-image
- Jenkins > Build Now > 192.168.153.113:7071 (접속ip: 7071)에서 프론트 작업 가능