### Base Image 지정
FROM mariadb:10.4.18
### TimeZone 환경 변수 지정
ENV TZ Asia/Seoul
### Mariadb root 비밀번호 설정
ENV MYSQL_ROOT_PASSWORD=root
### Mariadb Database 생성
ENV MYSQL_DATABASE=deverse
### TimeZone 설
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
### Mariadb User 및 DB 스키마 설정 스크립
ADD deverse.sql /docker-entrypoint-initdb.d/deverse.sql
ADD db_user.sql /docker-entrypoint-initdb.d/db_user.sql
### 홈 디렉토리
WORKDIR /home/dev
### 서비스 포
EXPOSE 3306
### Base Image 지정
FROM ubuntu:20.04
### TimeZone 환경 변수 지정
ENV TZ Asia/Seoul
### TimeZone 설정
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
### /home/dev 폴더 생성
RUN mkdir /home/dev
### update 및 패키지 설치
RUN apt update && apt -y install vim git tar gzip build-essential curl alien openjdk-8-jdk nginx
### nodejs 설
RUN curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_14_setup.sh && bash nodesource_14_setup.sh && apt -y install nodejs
### build, tomcat, maven, nginx(default.conf) 파일 복사
COPY build.tar.gz /home/dev/build.tar.gz
COPY tomcat-9.0.45.tar.gz /home/dev/tomcat-9.0.45.tar.gz
COPY apache-maven-3.8.1.tar.gz /home/dev/apache-maven-3.8.1.tar.gz
COPY default.conf /etc/nginx/conf.d/default.conf
### ubuntu01 계정 생성
RUN addgroup --gid 1100 ubuntu01 && adduser --disabled-password --home /home/dev --no-create-home --system -q --uid 1000 --ingroup ubuntu01 ubuntu01
### Github Source 파일 다운로드
RUN git clone https://github.com/bc-hwang/TEST.git /home/dev/deverse
### /home/dev 폴더 이동
WORKDIR /home/dev
### 암축 파일 해제
RUN tar -zxvf apache-maven-3.8.1.tar.gz
RUN tar -zxvf tomcat-9.0.45.tar.gz
RUN tar -zxvf build.tar.gz
### maven link 설정
RUN ln -s /home/dev/apache-maven-3.8.1/bin/mvn /usr/bin/mvn
### Build 실행
RUN cd /home/dev/build && bash ./back_build.sh
RUN cd /home/dev/build && bash ./front_build.sh
### Nginx & Tomcat Service 실행
CMD nginx -g 'daemon on;' && /home/dev/tomcat-9.0.45/bin/catalina.sh run
### 서비스 포
EXPOSE 80 8080
docker-compose.yml
### 빌드할 버전
version: '2'
### 서비스 설정
services:
mariadb:
image: tomcat_mariadb:mariadb
restart: always
nginx-tomcat:
image: tomcat_mariadb:nginx_tomcat
restart: always
ports:
- 80:80
links:
- mariadb
docker-compose.yml
### 빌드할 버전
version: '2'
### 서비스 설정
services:
mariadb:
image: bchwang/tomcat_mariadb:mariadb
restart: always
nginx-tomcat:
image: bchwang/tomcat_mariadb:nginx_tomcat
restart: always
ports:
- 80:80
links:
- mariadb
apiVersion: v1
kind: Service
metadata:
name: nginx-tomcat
labels:
app: nginx-tomcat
namespace: project
## 오브젝트 선언형 관리
annotations
## Floating ip 유지 설정
loadbalancer.openstack.org/keep-floatingip: "true"
spec:
ports:
- port: 80
protocol: TCP
targetPort: 30000
selector:
app: nginx-tomcat
## NodePort 가 아니라 LoadBalancer 로 설정 해 주어야 함.
type: LoadBalancer
## Floating ip 를 지정 하여 Loadbalancer ip 로 설정.
loadBalancerIP: 133.186.216.107
### mariadb 및 서비스 실행
$ kubectl apply -f 1.kubernetes_mariadb+service.yaml
### Mariadb Pod 실행 및 IP 정보 확인
$ kubectl get pod -n project -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mariadb-service-59868b7dd6-xb8tq 1/1 Running 0 1m 10.100.4.9 kubernetes <none> <none>
### ip 입력 후 nginx & tomcat 실행
kubectl apply -f 2.kubernetes_nginx+tomcat.yaml
### Pod 실행 및 IP 정보 확인
$ kubectl get pod -n project -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
mariadb-service-59868b7dd6-xb8tq 1/1 Running 0 1m 10.100.4.9 kubernetes <none> <none>
nginx_tomcat-service-59868b7dd6-xb8tq 1/1 Running 0 1m 10.100.4.10 kubernetes <none> <none>
### Service 정보 확인
$ kubectl get service -n project -o wide
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
nginx_tomcat nginx_tomcat LoadBalancer 133.186.216.107 <none> 80/TCP 8m4s app=nginx_tomcat
mariadb mariadb ClusterIP <none> <none> 3306/TCP 18m4s app=mariadb
- /install/nginx_tomcat 의 폴더에 dockerfile 을 혹인 후 아래 명령어 실행
-> docker build -t tomcat_mariadb:nginx_tomcat .
- docker images (tomcat_mariadb:nginx_tomcat 이미지 확인)
- docker login 을 함.
- docker tag tomcat_mariadb:nginx_tomcat bchwang/tomcat_mariadb:nginx_tomcat (tag 설정)
- docker tag tomcat_mariadb:mariadb bchwang/tomcat_mariadb:mariadb (tag 설정)
- docker push bchwang/tomcat_mariadb:nginx_tomcat (docker hub 에 업로드 진행)
- docker push bchwang/tomcat_mariadb:mariadb (docker hub 에 업로드 진행)
- docker images
- docker run -d --name mariadb tomcat_mariadb:mariadb
- docker run -d --name tomcat -p 80:80 --link mariadb tomcat_mariadb:nginx_tomcat
- docker run -d --name mariadb bchwang/tomcat_mariadb:mariadb
- docker run -d --name tomcat -p 80:80 --link mariadb bchwang/tomcat_mariadb:nginx_tomcat
- /install/docker-compose_local.yml (docker-compose 설정 값 Local Images 사용)
- /install/docker-compose.yml (docker-compose 설정 값 Docker Hub Images 사용)
- NHN Cloud Console 접속 -> Compute -> Instance -> 인스턴스 생성
- 이미지(Ubuntu Server 20.04 LTS) -> 인스턴스 이름(kube-manager) -> 인스턴스 타입(Standard : t2.c1m1) -> 키 페어 선택(생성 or 기존에 사용하던것)
-> 블록 스토리지 타입(HDD or SDD) -> 블록 스토리지 크기(50~100GB) -> 인스턴스 생성
- NHN Cloud Console 접속 -> Container -> Kubernetes -> 클러스터 생성
- 클러스터 이름(kube-master) -> 인스턴스 타입(Standard : m2.c8m16) -> 노드 수(2~3개) -> 키 페어 선택(생성 or 기존에 사용하던것)
-> 블록 스토리지 타입(HDD or SDD) -> 블록 스토리지 크기(50~100GB) -> 오토 스케일러(사용 or 사용 안 함) -> 클러스터 생성
- NHN Cloud Console 접속 -> Network -> Security Groups -> Default 선택 -> 보안정책 생성 -> 포트: 22, 원격 공인IP 입력(ex 포트: 22, CIDR: 111.111.111.111/32) 후 확인
- 자세한 사항은 https://docs.toast.com/ko/Compute/Instance/ko/overview/#linux (SSH 접속 방법) 참고
- https://doc.skill.or.kr/nhn-cloud#5-2-kube-manager-api 에서 NHN Cloud Kubernetes API 설정 방법
- /install/1.kubernetes_mariadb+service.yaml (mariadb Pod/Service 등 설정 값)
-> kubectl apply -f 1.kubernetes_mariadb+service.yaml (mariadb pod 와 Service 실행) -> kubectl get pod -n project -o wide (Mariadb IP 확인)
- /install/2.kubernetes_nginx+tomcat.yaml (tomcat Pod 설정 값)
-> vi 2.kubernetes_nginx+tomcat.yaml (- ip: "10.100.4.9" 의 값을 Mariadb IP 로 수정) -> kubectl apply -f 2.kubernetes_nginx+tomcat.yaml (Nginx 와 Tomcat Pod 실행)
- Build 설정 파일
- nginx+tomcat Server 접속
- /home/dev/build/application.yml 에 DB 접속 정보 설정
- /home/dev/deverse/frontend/.env.build 에 url 접속 정보 설정