1. 준비사항
터미널 접속도구(Putty,xShell,cmd 등등)
FTP 프로그램(파일질라)
리눅스 명령어
컨테이너 와 POD 개념
결과물(Zoomoney 기준)
> Front-End(리액트 프로젝트)
> Back-End(SpingBoot 프로젝트)
> mariadb SQL 스키마 및 데이터 파일 (.sql)
1.MariaDB SQL DUMP 받는법
여기서 DUMP 란???
SQL DUMP는 데이터베이스의 백업 또는 복구를 위한 SQL 파일을 의미함,
데이터베이스의 테이블 구조, 데이터, 인덱스, 뷰, 트리거 등을 SQL 문 형태로 저장한 파일
1. MariaDB 접속방법
//mariadb 접속 방법
mysql -h zoomoney.c3msoiki2c17.ap-northeast-2.rds.amazonaws.com -P 3306 -u root -p
Setting environment for MariaDB 11.5 (x64)
C:\Windows\System32>mysql -h zoomoney.c3msoiki2c17.ap-northeast-2.rds.amazonaws.com -P 3306 -u root -p
Enter password: **************** //공유된 RDS 비밀번호
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 151821
Server version: 11.4.4-MariaDB-log managed by https://aws.amazon.com/rds/
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)]> use zoomoney
Database changed
MariaDB [zoomoney]> show tabels;
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 'tabels' at line 1
MariaDB [zoomoney]> show tabels;
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 'tabels' at line 1
MariaDB [zoomoney]> show tables;
+----------------------+
| Tables_in_zoomoney |
+----------------------+
| account |
| card |
| category |
| contract |
| daily |
| member |
| money_plan |
| notify |
| plan_detail |
| quiz |
| quiz_keyword |
| stock |
| stock_history |
| stock_history_backup |
| stock_info |
| stock_money |
| stock_result |
| use_history |
+----------------------+
18 rows in set (0.010 sec)
MariaDB [zoomoney]>
2. Zoomoney DB dump 하는법
//DB DUMP 하는방법
mysqldump -h zoomoney.c3msoiki2c17.ap-northeast-2.rds.amazonaws.com -P 3306 -u root -p --databases zoomoney > C:/Users/dydqj/Downloads/zoomoney_dump.sql
옵션 설명
-h : 접속하려는 DB 의 엔드포인트
-P : DB 의 포트번호
-u : user 이름
-p : 비밀번호 문의 유무
--database: db 이름
> C:/Users/dydqj/Downloads/zoomoney_dump.sql : dump 명령어의 결과물을 해당디렉토리의 파일이름.sql로 export 하겠다
DUMP 수행
Setting environment for MariaDB 11.5 (x64)
C:\Windows\System32>mysqldump -h zoomoney.c3msoiki2c17.ap-northeast-2.rds.amazonaws.com -P 3306 -u root -p --databases zoomoney > C:/Users/dydqj/Downloads/zoomoney_dump.sql
Enter password: ****************
C:\Windows\System32>
.sql 파일 Export 확인
<디렉토리 구조>
[root@zoomoney ~]# tree
.
├── anaconda-ks.cfg
├── backend
│ ├── Containerfile
│ └── ZooMoney_BackEnd_LocalDB.jar
├── contract_pdf
│ ├── fonts
│ │ └── malgun.ttf
│ └── signature
├── database
│ ├── Containerfile
│ └── zoomoney_dump.sql
├── frontend
│ ├── asset-manifest.json
│ ├── build
│ ├── build.tar
│ ├── Containerfile
│ ├── favicon.ico
│ ├── index.html
│ ├── logo192.png
│ ├── logo512.png
│ ├── manifest.json
│ ├── pdf.worker.min.js
│ ├── pdf.worker.min.mjs
│ ├── robots.txt
│ └── static
<Front-End 빌드 파일 셋팅>
1.Front-End 파일 빌드하기
.env 에 설정추가(VsCode)
GENERATE_SOURCEMAP=false
VsCode 터미널창에서 npm run build 명령어 수행
C:\Users\dydqj\git\ZooMoney_FrontEnd>npm run build
> zoomoney@0.1.0 build
> react-scripts build
Creating an optimized production build...
Compiled with warnings.
[eslint]
src\card\CardHistory.jsx
Line 9:8: 'cardimage' is defined but never used no-unused-vars
src\moneyPlan\SelectChart.jsx
Line 100:6: React Hook useEffect has a missing dependency: 'findPlanNumByDate'. Either include it or remove the dependency array react-hooks/exhaustive-deps
Search for the keywords to learn more about each warning.
To ignore, add // eslint-disable-next-line to the line before.
File sizes after gzip:
484 kB (+139 B) build\static\js\main.e1b819db.js
394.29 kB build\static\js\380.80d869ba.chunk.js
44.64 kB (+6 B) build\static\css\main.2584c086.css
1.73 kB build\static\js\206.34ec3213.chunk.js
The project was built assuming it is hosted at /.
You can control this with the homepage field in your package.json.
The build folder is ready to be deployed.
You may serve it with a static server:
serve -s build
Find out more about deployment here:
https://cra.link/deployment
2.빌드파일 확인(프로젝트 폴더 경로 이동)
경고:>>>build 폴더를 통째로 파일질라로 업로드시 업로드는 가능하나.. 크기에 따라서 시간이 오래걸리면
시간초과로 업로드가 중지될수도있으니,, .tar 나 gzip 파일 처럼 압축해서 올리는것을 권장함
3.파일질라(FileZilla) 로 Front-End 빌드파일 업로드(계정에따라 디렉토리 다를수도있음)
업로드후 압축된 build 파일 해체(tar 로 압축했기때문에 tar 명령어로 압축해제)
[root@zoomoney frontend]# ll
total 13012
-rw-r--r--. 1 zoomoney zoomoney 13317120 Mar 24 20:16 build.tar
-rw-r--r--. 1 root root 105 Mar 24 16:48 Containerfile
[root@zoomoney frontend]# tar -xvf build.tar
압축해제 확인 후 build 디렉토리로 이동하여 모든파일 frontend 디렉토리 이동(mv 명령어 사용)
[root@zoomoney frontend]# ls
build build.tar Containerfile
[root@zoomoney frontend]# cd build/
[root@zoomoney build]# ls
asset-manifest.json favicon.ico index.html logo192.png logo512.png manifest.json pdf.worker.min.js pdf.worker.min.mjs robots.txt static
[root@zoomoney build]# mv * ../
[root@zoomoney build]# ls ../
asset-manifest.json build build.tar Containerfile favicon.ico index.html logo192.png logo512.png manifest.json pdf.worker.min.js pdf.worker.min.mjs robots.txt static
[root@zoomoney build]#
[root@zoomoney frontend]# pwd
/root/frontend
[root@zoomoney frontend]# cat Containerfile
FROM docker.io/library/nginx:1.26.3
COPY * /usr/share/nginx/html
ADD static /usr/share/nginx/html/static
[root@zoomoney frontend]# ls -al
total 15616
drwxr-xr-x. 4 zoomoney zoomoney 4096 Mar 24 20:18 .
dr-xr-x---. 8 root root 4096 Mar 24 20:19 ..
-rwxr-xr-x. 1 root root 3388 Mar 24 20:14 asset-manifest.json
drwxr-xr-x. 2 root root 6 Mar 24 20:18 build
-rw-r--r--. 1 zoomoney zoomoney 13317120 Mar 24 20:16 build.tar
-rw-r--r--. 1 root root 105 Mar 24 16:48 Containerfile
-rwxr-xr-x. 1 root root 165662 Mar 18 15:20 favicon.ico
-rwxr-xr-x. 1 root root 643 Mar 24 20:14 index.html
-rwxr-xr-x. 1 root root 5347 Mar 12 10:34 logo192.png
-rwxr-xr-x. 1 root root 9664 Mar 12 10:34 logo512.png
-rwxr-xr-x. 1 root root 517 Mar 12 10:34 manifest.json
-rwxr-xr-x. 1 root root 1074786 Mar 17 18:40 pdf.worker.min.js
-rwxr-xr-x. 1 root root 1375858 Mar 12 10:34 pdf.worker.min.mjs
-rwxr-xr-x. 1 root root 70 Mar 12 10:34 robots.txt
drwxr-xr-x. 5 root root 40 Mar 24 20:14 static
[root@zoomoney frontend]#
<Back-End 빌드 파일 셋팅>
1.BackEnd 프로젝트 .jar 로 빌드하기
GradleTasks > build >bootJar 클릭
빌드성공시
프로젝트 폴더 이동후 빌드된 .jar 파일 확인후 미리 작성된 Container 파일 내용안에 ZooMoney_BackEnd_LocalDB.jar
이름으로 해당파일을 이미지를 만들기때문에 .jar 파일 이름을 맞춰줘야함
파일질라로 backend .jar 파일 업로드
[root@zoomoney backend]# pwd
/root/backend
[root@zoomoney backend]# cat Containerfile
FROM docker.io/library/openjdk:24-ea-21-jdk-slim
COPY ZooMoney_BackEnd_LocalDB.jar /usr/local/zoomoney/app.jar
EXPOSE 7777
CMD ["java", "-jar","/usr/local/zoomoney/app.jar"]
[root@zoomoney backend]# ls -al
total 116880
drwxr-xr-x. 2 zoomoney zoomoney 63 Mar 24 20:19 .
dr-xr-x---. 8 root root 4096 Mar 24 20:19 ..
-rw-r--r--. 1 root root 175 Mar 24 20:19 Containerfile
-rw-r--r--. 1 zoomoney zoomoney 119673486 Mar 24 20:17 ZooMoney_BackEnd_LocalDB.jar
[root@zoomoney backend]#
<DataBase 빌드 파일 셋팅>
파일질라로 .sql 파일 database 디렉토리 업로드
[root@zoomoney database]# pwd
/root/database
[root@zoomoney database]# cat Containerfile
FROM docker.io/library/mariadb:11.4.5-ubi
ENV MARIADB_ROOT_PASSWORD=1234
ENV MARIADB_DATABASE=zoomoney
COPY zoomoney_dump.sql /docker-entrypoint-initdb.d/initdb.sql
[root@zoomoney database]# ls -al
total 56
drwxr-xr-x. 2 zoomoney zoomoney 52 Mar 24 20:17 .
dr-xr-x---. 8 root root 4096 Mar 24 20:19 ..
-rw-r--r--. 1 root root 166 Mar 24 16:48 Containerfile
-rw-r--r--. 1 zoomoney zoomoney 49053 Mar 24 20:17 zoomoney_dump.sql
[root@zoomoney database]#
<Front-End 컨테이너 이미지 빌드>
1.frontend 디렉토리 이동후
buildah bud -t frontend:v2 . 명령어 수행
[root@zoomoney frontend]# buildah bud -t frontend:v2 .
STEP 1/3: FROM docker.io/library/nginx:1.26.3
STEP 2/3: COPY * /usr/share/nginx/html
STEP 3/3: ADD static /usr/share/nginx/html/static
COMMIT frontend:v2
Getting image source signatures
Copying blob 1287fbecdfcc skipped: already exists
Copying blob 1fc3fb77f66c skipped: already exists
Copying blob 6e5156a205f6 skipped: already exists
Copying blob d0f4c4ff4232 skipped: already exists
Copying blob 391db6a7e7d3 skipped: already exists
Copying blob 58ed31f4db9b skipped: already exists
Copying blob b9a57c4b9f8f skipped: already exists
Copying blob 44c156affad4 done |
Copying config e86184a14c done |
Writing manifest to image destination
--> e86184a14c0c
Successfully tagged localhost/frontend:v2
e86184a14c0c083b71ddec62d9f3d636790abf30c8b1ae48b8db192b90e6c132
<Back-End 컨테이너 이미지 빌드>
1.backend 디렉토리 이동후
buildah bud -t backend:v2 . 명령어 수행
[root@zoomoney backend]# buildah bud -t backend:v2 .
STEP 1/4: FROM docker.io/library/openjdk:24-ea-21-jdk-slim
STEP 2/4: COPY ZooMoney_BackEnd_LocalDB.jar /usr/local/zoomoney/app.jar
STEP 3/4: EXPOSE 7777
STEP 4/4: CMD ["java", "-jar","/usr/local/zoomoney/app.jar"]
COMMIT backend:v2
Getting image source signatures
Copying blob 98b5f35ea9d3 skipped: already exists
Copying blob c98faa4eebe8 skipped: already exists
Copying blob ea8bd79626bd skipped: already exists
Copying blob 4cc6f2c5d4ae done |
Copying config 279c9f331c done |
Writing manifest to image destination
--> 279c9f331c11
Successfully tagged localhost/backend:v2
279c9f331c11b80d4de47fe9381414d6335ed72ce6d5a2b803a71bac65646021
[root@zoomoney backend]#
<Database 컨테이너 이미지 빌드>
1.database 디렉토리 이동후
buildah bud -t database:v2 . 명령어 수행
[root@zoomoney database]# buildah bud -t database:v2 .
STEP 1/4: FROM docker.io/library/mariadb:11.4.5-ubi
STEP 2/4: ENV MARIADB_ROOT_PASSWORD=1234
STEP 3/4: ENV MARIADB_DATABASE=zoomoney
STEP 4/4: COPY zoomoney_dump.sql /docker-entrypoint-initdb.d/initdb.sql
COMMIT database:v2
Getting image source signatures
Copying blob 45c00d6e135e skipped: already exists
Copying blob 92fbf195d637 skipped: already exists
Copying blob d37b349846af skipped: already exists
Copying blob c92e059fc869 skipped: already exists
Copying blob 169fbbebd80b skipped: already exists
Copying blob 09dd923221bc skipped: already exists
Copying blob 2083427d588a skipped: already exists
Copying blob 8ab90d31ccde skipped: already exists
Copying blob 7f8958a102ef skipped: already exists
Copying blob 9ae86fb5cef9 skipped: already exists
Copying blob 8ca443c97da5 done |
Copying config 5be0615a54 done |
Writing manifest to image destination
--> 5be0615a5483
Successfully tagged localhost/database:v2
5be0615a54839bf6f04478071885dd972ae8e959b1fed064d26d16ffd08a80d2
<빌드된 컨테이너 이미지 확인>
[root@zoomoney ~]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/database v2 5be0615a5483 About a minute ago 471 MB
localhost/backend v2 279c9f331c11 10 minutes ago 571 MB
localhost/frontend v2 e86184a14c0c 16 minutes ago 233 MB
<POD 생성 및 기동상태 확인>
[root@zoomoney ~]# podman pod create --publish 80:80 --publish 7777:7777 --name zoomoney1
3463429f13d138a2c6e79e6e4381c6915071f518247555c85e7aaba29980738f
[root@zoomoney ~]# podman pod ls
POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
3463429f13d1 zoomoney1 Created 5 seconds ago 02d5923b5723 1
77195cd53639 zoomoney Running 16 hours ago 49bb7c151059 4
[root@zoomoney ~]#
<Container 이미지 기동>
podman container run -d --name frontend --pod zoomoney1 localhost/frontend:v2
podman container run -d --name backend --pod zoomoney1 localhost/backend:v2
podman container run -d --name database --pod zoomoney1 localhost/database:v2
'Cloud' 카테고리의 다른 글
Jenkins (0) | 2025.04.22 |
---|---|
Docker 와 Podman 차이 (0) | 2025.03.23 |
Skopeo (0) | 2025.01.21 |
Dev-Ops (0) | 2025.01.20 |
Cloud-Front (0) | 2025.01.15 |