회사에서는 Spring boot jar를 사용하여 서버를 구동하기 때문에 Docker를 사용할 일이 없었지만
이번에 테스트 겸 프로젝트를 올려보았다. 아주 조금 docker를 사용했기 때문에 그냥 프로젝트끼리
docker image를 만들어 container에 올리면 되는 것이 아닌가 하고 안일하게 생각한 뒤 작업을 진행하였다.
뒤에 무슨 일이 생기는 줄도 모르고....ㅋㅋ
본 포스팅의 작업은 OS에 Docker가 설치되어 있다는 가정 하에 진행됩니다.
✅ MariaDB
DB의 경우는 매우 유명해서 아주 수월했다...
🔹MariaDB image 설치
우선 mariaDB를 pull 해준다.
docker pull mariadb
아래와 같이 mariaDB 이미지를 확인할 수 있다.
[root@DJ-blabla-v7 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb latest d08fd2bbace4 6 days ago 406MB
🔹MariaDB Container 실행
docker run --name {containerName} -d -p 3307:3306 --restart=always -e MYSQL_ROOT_PASSWORD=root {imageName}
옵션 | 내용 |
--name | 컨테이너 이름 정의 |
-d | 컨테이너를 백그라운드에서 실행 |
-p | 호스트와 컨테이너 간의 포트연결 호스트 3306 -> 컨테이너 3306 포트 포워딩 |
--restart=always | 도커 실행 시 컨테이너 실행 |
-e | 기타 환경설정 |
MYSQL_ROOT_PASSWORD | root 사용자 초기 비밀번호 설정 |
실행시켰으면 컨테이너 목록에 제대로 들어와 있는지 확인
docker ps
[root@DJ-blabla-v7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3033ec63cb44 mariadb "docker-entrypoint.s…" 14 hours ago Up 14 hours 0.0.0.0:3307->3306/tcp, :::3307->3306/tcp mariadb
🔹MariaDB Container 접근
docker exec -it {containerName} mariadb -uroot -p
[root@DJ-blabla-v7 ~]# docker exec -it mariadb mariadb -uroot -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 307
Server version: 11.4.2-MariaDB-ubu2404 mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> show database;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'database' at line 1
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| person |
| sys |
+--------------------+
5 rows in set (0.001 sec)
이제 DB를 만들고 테이블을 만들어서 사용하면 된다.
✅ Spring Boot
Spring Boot의 경우에도 프로젝트 구성을 전반적으로 진행했다는 가정 하에 작업이 진행됩니다.
🔹Jar 파일, Dockerfile 생성
bootJar를 통해서 jar 파일을 생성하면 /build/libs 경로에 jar 파일이 생성된다.
그리고 Docker image 파일을 생성하기 위해 Dockerfile을 생성한다.
FROM openjdk:17
ARG JAR_FILE=*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","app.jar"]
🔹Spring boot Docker image 생성
jar와 Dockerfile이 있는 디렉토리에서 터미널을 실행해 준 뒤 아래 명령어를 입력한다.
docker build -t springapp .
PS C:\Users\minki\Downloads\test\build\libs> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
springapp latest 8cbdc24459d8 14 hours ago 523MB
🔹Docker hub로 image push
지금 만든 springapp의 image를 FTP를 통해 서버로 옮길 수 있지만 docker hub를 이용하여 다운로드 받도록 했다.
우선 docker hub에 로그인을 해야한다.
docker login --username={docker.userName}
그리고 태깅을 한 뒤 hub로 push 해준다.
docker tag {imageId} {docker.userName}/{repository_name}[:TAG]
docker tag 9d1a41b735c9 rlaalsrl9569/springapp:1.0.1
docker push {docker.userName}/{repositoryName}[:TAG]
docker push rlaalsrl9569/springapp:1.0.1
태그를 반드시 달 필요는 없지만 만약 태그를 달았다면 push 할 때도 태그를 달아주어야 한다.
🔹서버에서 docker image 다운로드
docker pull rlaalsrl9569/springapp:1.0.1
🔹docker container 실행
docker run -d --name springapp -p 8080:8080 rlaalsrl9569/springapp:1.0.1
🔹docker container 확인
[root@DJ-blabla-v7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
49e1341806b8 rlaalsrl9569/springapp:1.0.1 "java -jar app.jar" 5 hours ago Up 5 hours 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp springapp
이렇게 Spring boot까지 실행시켰으니 React까지 올리고 테스트를 해보자.
✅ React
react는 아래 포스팅에서 확인할 수 있습니다.
2024.06.18 - [Server] - Linux - Docker 컨테이너 올리기 (react, spring boot, mariadb) [2]
'Server' 카테고리의 다른 글
Linux에서 Spring boot jar 특정 java version으로 실행하기 (1) | 2024.09.12 |
---|---|
Linux - Docker 컨테이너 올리기 (react, spring boot, mariadb) [2] (0) | 2024.06.18 |
Docker + Redis 설치 (0) | 2023.08.09 |