이번에 현장실습 과제가 Docker를 사용해서 지금까지 만든 프로젝트를 배포하는 것이다.
Docker를 공부해야지 해야지 하다가 결국 쓰게 되었다.
과정 자체는 크게 다를 거 같지 않으니 기록을 하며 해보려고 한다.
Docker 설치
당연히 Docker를 설치 해야한다.
우선 apt를 업데이트 해준다.
sudo apt-get update
그 다음엔 앞으로 사용할 프로그램들을 설치해준다.
sudo apt-get install \
apt-transport-https \
ca-certificates \
gnupg \
lsb-release
그리고는 Docker GPG 키를 가져온다.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Docker Repository를 추가하고
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
이제 여기에 Docker를 설치한다
다시 apt-get을 업데이트하고 Docker를 설치해준다.
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
이렇게 버전을 봤을 때 잘 출력이 된다면 정상이다.
자바 설치
docker 다운받으면서 혹시나 하고 Java를 봤는데 설치가 안되어있다.
java -version만 입력을 해도
버전들이 밑에 쭉 나온다
프로젝트에 맞게 11로 다운을 받겠다.
설치는 쉽다.
환경변수 설정이 어려울 뿐
우선 javac의 경로를 가져온다.
readlink로 실제 경로를 찾는다
sudo vi /etc/profile
profile을 열어주고
얻은 정보들을 이용하여 환경변수를 작성해준다.
profile을 적용시켜주고 환경변수를 출력해보면 정상작동한다.
MariaDB 이미지 생성
스프링 부트를 같은 도커의 MariaDB에 연결 할 것이기 때문에 MariaDB 이미지를 가져온다.
docker pull mariadb
이렇게만 하면 mariadb 이미지가 가져와진다.
이거로 컨테이너를 생성한다.
docker container run -d -p 3306:3306 -e MARIADB_ROOT_PASSWORD=<비밀번호> --name mariadb-container mariadb
docker ps 명령어를 입력해보면 잘 작동하는 것을 볼 수 있다.
여기에 들어가서 스키마와 유저를 생성해야 한다.
docker exec -it mariadb-container /bin/bash
이 명령어로 mariadb에 들어가서 스키마와 유저를 생성하고 오자
Springboot
우선 만든 프로젝트를 pull해서 가져온다.
대부분의 경우 application.properties가 비어있을 것이다.
거기에 이렇게 적어주면 된다.
여기서 또 생각해보니 maven 설치를 안했다....
maven은
apt install maven
이거로 설치할 수 있다.
설치가 완료되었다면 스프링 빌드 프로젝트에서
mvn clean package -DskipTests
로 jar 파일을 만들어준다.
target 폴더를 보면 원하는 jar 파일이 생성 된 것을 볼 수 있다.
이제 이것도 도커 위에 올리자
우선 Dockerfile로 이미지를 생성해준다.
Dockerfile은 이렇게 작성하였다.
FROM openjdk:11
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} demo-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java","-jar", "demo-0.0.1-SNAPSHOT.jar"]
해당 위치에서
sudo docker build -t spring-boot-image .
이 명령어로 이미지를 생성해준다.
그리고 해당 이미지로 컨테이너를 만들기 위해
version: '3'
services:
mariadb:
image: mariadb
container_name: mariadb-container
environment:
MARIADB_ROOT_PASSWORD: password
ports:
- "????:????"
spring-boot-app:
image: spring-boot-image
container_name: spring-boot-container
restart: always
depends_on:
- mariadb
ports:
- "????:????"
environment:
SPRING_DATASOURCE_URL: jdbc:mariadb://mariadb:3306/knudb
SPRING_DATASOURCE_USERNAME: user
SPRING_DATASOURCE_PASSWORD: password
이렇게 docker-compose.yml을 작성하고
sudo docker-compose up -d
로 컨테이너를 만들어주면 끝이다!
'현장실습' 카테고리의 다른 글
Duplicate entry error (0) | 2023.07.20 |
---|