참고 도서 : IT 운용 체제를 위한 데브옵스
DevOps 탄생 배경
Waterfall
단계별 : 단계를 마치고 다음 단계로
웹 개발의 다양성 증가로 인한 요구사항의 증가로 지금은 잘 안씀
Agile
단계별 진화(프로토타입)
waterfall을 작은 단위로 한다고 생각
수정 등에서 유리
스프린트 Sprint : 반복적인 개발 주기
Agile Scrum 방식
DevOps
agile에 빠져 있는 운영이 추가됨(운영을 했을 때 발생하는 문제)
개발-배포-운영 등을 자동화 => DevOps 툴 사용(깃, 깃허브, 도커 등)
자동화 툴을 매개체로 개발자-운영자-QA 협업
Git
코드 이력 관리 툴
쉽게 말해 commit을 써서 세이브포인트를 만든다.
Git bash
git 초기 설정
git config --global user.name <이름>
git config --global user.email <이메일>
git config --list
git 레포지토리 초기화
mkdir 레포지토리명
cd 레포지토리명
git init
파일 생성
$ echo '샘플' > sample.txt
staging 영역에 모두 등록 / 파일 등록(임시 영역 = 커밋 준비)
$ git add .
$ git add <파일명>
파일 상태 확인
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: sample.txt
작업 폴더에 하위 폴더 추가
$ mkdir child-dir
하위 폴더에 파일 추가
$ echo 'child-directory' > child-dir/sample.txt
하위 폴더 파일 확인
$ cat child-dir/sample.txt
child-directory
파일 상태 확인
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: sample.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
child-dir/
staging 영역에 모두 등록
$ git add .
첫번째 commit 하기(= repository에 등록)
$ git commit -m "first commit"
[master (root-commit) f0afcb3] first commit
2 files changed, 2 insertions(+)
create mode 100644 child-dir/sample.txt
create mode 100644 sample.txt
-m : 메세지(자유)
단계 정리
작업 폴더 --git add--> staging 영역 --commit--> repository
파일 상태 확인 : staging 영역에 아무 파일도 남지 않음
$ git status
On branch master
nothing to commit, working tree clean
commit 이력 확인(log)
$ git log
commit f0afcb3750c9769f6fad2e00ee9dd3446cbf9474 (HEAD -> master)
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 13:46:55 2022 +0900
first commit
간략하게 log 확인 : 누가 올렸는지 중요하지 않고 커밋 아이디와 로그만 보고 싶을 때
$ git log --oneline
f0afcb3 (HEAD -> master) first commit
파일 갱신하기
$ echo '파일 갱신!' > sample.txt
파일 변경 차이 확인
git diff
a/sample.txt, b/sample.txt : 변경 전/ 변경 후 구분
$ git diff
warning: LF will be replaced by CRLF in sample.txt.
The file will have its original line endings in your working directory
diff --git a/sample.txt b/sample.txt
index e95cdeb..878d478 100644
--- a/sample.txt
+++ b/sample.txt
@@ -1 +1 @@
-'<BB><F9><C7><C3>'
+파일 갱신!
git add
$ git add .
warning: LF will be replaced by CRLF in sample.txt.
The file will have its original line endings in your working directory
git status
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: sample.txt
변경 파일 commit 하기
$ git commit -m 'sample.txt 변경'
[master 47bb027] sample.txt 변경
1 file changed, 1 insertion(+), 1 deletion(-)
commit 이력 확인(맨 위가 최신)
$ git log
commit 47bb027ad47eaab8f34fcfce5727f21a2ee9eb4e (HEAD -> master)
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 14:21:38 2022 +0900
sample.txt 변경
commit f0afcb3750c9769f6fad2e00ee9dd3446cbf9474
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 13:46:55 2022 +0900
first commit
한줄로 확인
$ git log --oneline
47bb027 (HEAD -> master) sample.txt 변경
f0afcb3 first commit
파일 갱신하기(2번째 줄에 내용 추가)
$ echo 'child directory 변경!' >> child-dir/sample.txt
파일 내용 확인
$ cat child-dir/sample.txt
child-directory
child directory 변경!
파일 변경 차이 확인
git diff
$ git diff
warning: LF will be replaced by CRLF in child-dir/sample.txt.
The file will have its original line endings in your working directory
diff --git a/child-dir/sample.txt b/child-dir/sample.txt
index eb33c8d..22c58f4 100644
--- a/child-dir/sample.txt
+++ b/child-dir/sample.txt
@@ -1 +1,2 @@
child-directory
+child directory 변경!
git add
$ git add .
warning: LF will be replaced by CRLF in child-dir/sample.txt.
The file will have its original line endings in your working directory
git status
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: child-dir/sample.txt
변경 파일 commit 하기
$ git commit -m 'child dir sample.txt 변경'
[master b2a212f] child dir sample.txt 변경
1 file changed, 1 insertion(+)
commit 이력 확인(맨 위가 최신)
$ git log
commit b2a212fa5bd0828b3eac18e3ca947b9c374c3d61 (HEAD -> master)
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 14:26:48 2022 +0900
child dir sample.txt 변경
commit 47bb027ad47eaab8f34fcfce5727f21a2ee9eb4e
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 14:21:38 2022 +0900
sample.txt 변경
commit f0afcb3750c9769f6fad2e00ee9dd3446cbf9474
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 13:46:55 2022 +0900
first commit
한줄로 확인
$ git log --oneline
b2a212f (HEAD -> master) child dir sample.txt 변경
47bb027 sample.txt 변경
f0afcb3 first commit
staging 되돌리기
staging에 파일 내용 변경하여 올리기
user@LAPTOP-VFKJ34NR MINGW64 ~/sample_repo (master)
$ echo '변경합니다' > sample.txt
user@LAPTOP-VFKJ34NR MINGW64 ~/sample_repo (master)
$ git diff
warning: LF will be replaced by CRLF in sample.txt.
The file will have its original line endings in your working directory
diff --git a/sample.txt b/sample.txt
index 878d478..548b816 100644
--- a/sample.txt
+++ b/sample.txt
@@ -1 +1 @@
-파일 갱신!
+변경합니다
user@LAPTOP-VFKJ34NR MINGW64 ~/sample_repo (master)
$ git add .
warning: LF will be replaced by CRLF in sample.txt.
The file will have its original line endings in your working directory
user@LAPTOP-VFKJ34NR MINGW64 ~/sample_repo (master)
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: sample.txt
git reset
$ git reset
Unstaged changes after reset:
M sample.txt
되돌린 결과 확인
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: sample.txt
no changes added to commit (use "git add" and/or "git commit -a")
파일 변경점 되돌리기
$ git reset --hard
HEAD is now at b2a212f child dir sample.txt 변경
파일 내용 확인
$ cat sample.txt
파일 갱신!
특정 커밋으로 되돌리기
HEAD : 현재 상태 위치
$ git log
commit b2a212fa5bd0828b3eac18e3ca947b9c374c3d61 (HEAD -> master)
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 14:26:48 2022 +0900
child dir sample.txt 변경
commit 47bb027ad47eaab8f34fcfce5727f21a2ee9eb4e
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 14:21:38 2022 +0900
sample.txt 변경
commit f0afcb3750c9769f6fad2e00ee9dd3446cbf9474
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 13:46:55 2022 +0900
first commit
특정 commit id로 되돌리기
$ git reset --hard f0afcb3750c9769f6fad2e00ee9dd3446cbf9474
HEAD is now at f0afcb3 first commit
결과 확인 : 다른 커밋(세이브포인트) 모두 삭제됨
$ git log
commit f0afcb3750c9769f6fad2e00ee9dd3446cbf9474 (HEAD -> master)
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 13:46:55 2022 +0900
first commit
Github
원격 레포지토리(remote repository)를 제공하는 git-hosting 서비스
clone : 원격 레포지토리를 복사 (= 다운로드)
pull : 현재 브랜치의 내용을 당겨오기(브랜치 : 작업 단위)
fetch : 현재 레포지토리 최신 버전으로 갱신
push : 로컬 레포지토리 업로드
빈 레포지토리 생성
main branch 생성
-M : 해당 branch를 메인으로 사용하겠다
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (master)
$ git branch -M main
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (main)
$
원격 레포지토리 추가
$ git remote add origin https://github.com/jay0v0/sample-repo.git
파일 업로드 하기 Push
$ git push -u origin main
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 213 bytes | 213.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/jay0v0/sample-repo.git
* [new branch] main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
결과 확인
파일 수정 후 push
최초 push 때 -u 옵션 사용, 따라서 그냥 git push만 해도 됨 설명
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (main)
$ mkdir child
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (main)
$ echo 'dddd' > child/sample.txt
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (main)
$ git add .
warning: LF will be replaced by CRLF in child/sample.txt.
The file will have its original line endings in your working directory
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (main)
$ cat child/sample.txt
dddd
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (main)
$ git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: child/sample.txt
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (main)
$ git commit -m 'second'
[main 77e77cb] second
1 file changed, 1 insertion(+)
create mode 100644 child/sample.txt
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (main)
$ git log
commit 77e77cbee23251b59d2a581dd010236051342c72 (HEAD -> main)
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 15:29:24 2022 +0900
second
commit a4d6f5b7c29767e36811fcbc9427cae3a4024378 (origin/main)
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 14:50:50 2022 +0900
first commit
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (main)
$ git push
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 323 bytes | 323.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
To https://github.com/jay0v0/sample-repo.git
a4d6f5b..77e77cb main -> main
결과 확인
파일 다운로드 하기 Pull
github - readme 파일 생성
git pull
$ git pull
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 704 bytes | 140.00 KiB/s, done.
From https://github.com/jay0v0/sample-repo
77e77cb..23c9446 main -> origin/main
Updating 77e77cb..23c9446
Fast-forward
README.md | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 README.md
결과 확인
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (main)
$ ls
README.md child/ sample.txt
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (main)
$ cat README.md
# sample-repo
샘플
파일 복사해오기 clone
파일 삭제
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (main)
$ ls -al
total 22
drwxr-xr-x 1 user 197121 0 Feb 7 15:37 ./
drwxr-xr-x 1 user 197121 0 Feb 7 15:29 ../
drwxr-xr-x 1 user 197121 0 Feb 7 15:37 .git/
-rw-r--r-- 1 user 197121 23 Feb 7 15:37 README.md
drwxr-xr-x 1 user 197121 0 Feb 7 15:24 child/
-rw-r--r-- 1 user 197121 5 Feb 7 14:49 sample.txt
user@LAPTOP-VFKJ34NR MINGW64 ~/practice (main)
$ rm -rf .git
git clone
$ git clone https://github.com/jay0v0/sample-repo.git
Cloning into 'sample-repo'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 10 (delta 0), reused 7 (delta 0), pack-reused 0
Receiving objects: 100% (10/10), done.
폴더명 지정 가능
$ git clone https://github.com/jay0v0/sample-repo.git my-repo
Cloning into 'my-repo'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 10 (delta 0), reused 7 (delta 0), pack-reused 0
Receiving objects: 100% (10/10), done.
Branch
줄기를 나누는 것
다른 개발자와 협업 시 여러 작업을 동시에 진행하고 싶을 때 사용
branch 생성
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (main)
$ git branch develop
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (main)
$ git branch
develop
* main
-b
생성과 동시에 바로 전환 옵션
$ git checkout -b develop
Switched to a new branch 'develop'
branch 전환
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (main)
$ git checkout develop
Switched to branch 'develop'
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (develop)
$
branch 삭제
$ git branch -D develop
Deleted branch develop (was 23c9446).
develop branch로 sample1.txt 생성
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (develop)
$ echo 'develop branch test' > sample1.txt
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (develop)
$ git add .
warning: LF will be replaced by CRLF in sample1.txt.
The file will have its original line endings in your working directory
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (develop)
$ git status
On branch develop
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: sample1.txt
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (develop)
$ git commit -m "develop branch"
[develop fba9719] develop branch
1 file changed, 1 insertion(+)
create mode 100644 sample1.txt
log 확인
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (develop)
$ git log
commit fba9719989fd716f35abd24b93b50a09257ff3fa (HEAD -> develop)
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 16:08:08 2022 +0900
develop branch
commit 23c9446782e272e9b65681b01a148f7781cb6482 (origin/main, origin/HEAD, main)
Author: jay0v0 <96156114+jay0v0@users.noreply.github.com>
Date: Mon Feb 7 15:36:16 2022 +0900
Create README.md
commit 77e77cbee23251b59d2a581dd010236051342c72
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 15:29:24 2022 +0900
second
commit a4d6f5b7c29767e36811fcbc9427cae3a4024378
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 14:50:50 2022 +0900
first commit
main branch로 전환 / log 확인
HEAD는 branch당 하나씩 존재
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (develop)
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (main)
$ git log
commit 23c9446782e272e9b65681b01a148f7781cb6482 (HEAD -> main, origin/main, origin/HEAD)
Author: jay0v0 <96156114+jay0v0@users.noreply.github.com>
Date: Mon Feb 7 15:36:16 2022 +0900
Create README.md
commit 77e77cbee23251b59d2a581dd010236051342c72
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 15:29:24 2022 +0900
second
commit a4d6f5b7c29767e36811fcbc9427cae3a4024378
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 14:50:50 2022 +0900
first commit
branch push
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (main)
$ git checkout -b issue
Switched to a new branch 'issue'
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (issue)
$ git push origin issue
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'issue' on GitHub by visiting:
remote: https://github.com/jay0v0/sample-repo/pull/new/issue
remote:
To https://github.com/jay0v0/sample-repo.git
* [new branch] issue -> issue
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (issue)
$ git checkout develop
Switched to branch 'develop'
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (develop)
$ git push origin develop
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 290 bytes | 290.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
remote:
remote: Create a pull request for 'develop' on GitHub by visiting:
remote: https://github.com/jay0v0/sample-repo/pull/new/develop
remote:
To https://github.com/jay0v0/sample-repo.git
* [new branch] develop -> develop
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (develop)
$ git log
commit fba9719989fd716f35abd24b93b50a09257ff3fa (HEAD -> develop, origin/develop)
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 16:08:08 2022 +0900
develop branch
commit 23c9446782e272e9b65681b01a148f7781cb6482 (origin/main, origin/issue, origin/HEAD, main, issue)
Author: jay0v0 <96156114+jay0v0@users.noreply.github.com>
Date: Mon Feb 7 15:36:16 2022 +0900
Create README.md
commit 77e77cbee23251b59d2a581dd010236051342c72
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 15:29:24 2022 +0900
second
commit a4d6f5b7c29767e36811fcbc9427cae3a4024378
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 14:50:50 2022 +0900
first commit
결과
Network graph 확인하는 법
예전 commit으로 돌아가기
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (develop)
$ git checkout a4d6
Note: switching to 'a4d6'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at a4d6f5b first commit
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo ((a4d6f5b...))
$ ls
sample.txt
현재 HEAD로 돌아오기
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo ((a4d6f5b...))
$ git checkout develop
Previous HEAD position was a4d6f5b first commit
Switched to branch 'develop'
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (develop)
$ ls
README.md child/ sample.txt sample1.txt
따라서 branch는 팀 작업에서 주로 사용한다.
보통 혼자 할 땐 develop branch에서 개발을 모두 다 하고 완성하면 main이랑 합치는 식으로 많이 한다.
branch 합치기
New pull request
merge(합치기)
현재 파일은 충돌이 없기 때문에 그대로 merge 된다.
모든 팀원이 확인하고 문제 없을 시 관리자가 Merge pull request 하면 된다.
완료된 Pull requests 확인
Bash에서 확인
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (main)
$ git pull
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (1/1), 617 bytes | 32.00 KiB/s, done.
From https://github.com/jay0v0/sample-repo
23c9446..7882a01 main -> origin/main
Updating 23c9446..7882a01
Fast-forward
sample1.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 sample1.txt
user@LAPTOP-VFKJ34NR MINGW64 ~/practice/sample-repo (main)
$ git log
commit 7882a012b0b079d65913afc30c8a59e6654abf2d (HEAD -> main, origin/main, origin/HEAD)
Merge: 23c9446 fba9719
Author: jay0v0 <96156114+jay0v0@users.noreply.github.com>
Date: Mon Feb 7 17:21:21 2022 +0900
Merge pull request #1 from jay0v0/develop
develop branch
commit fba9719989fd716f35abd24b93b50a09257ff3fa (origin/develop, develop)
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 16:08:08 2022 +0900
develop branch
commit 23c9446782e272e9b65681b01a148f7781cb6482 (origin/issue, issue)
Author: jay0v0 <96156114+jay0v0@users.noreply.github.com>
Date: Mon Feb 7 15:36:16 2022 +0900
Create README.md
commit 77e77cbee23251b59d2a581dd010236051342c72
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 15:29:24 2022 +0900
second
commit a4d6f5b7c29767e36811fcbc9427cae3a4024378
Author: JJ <youreawsome@gmail.com>
Date: Mon Feb 7 14:50:50 2022 +0900
first commit
느낀 점
예전엔 개발이 정말 수많은 노가다의 결정체였을 것 같다...
계속 발전해나가는 속도가 이렇게 빠른 게 프로그래밍의 흥미로운 점 중 하나다.
Git과 Github에 대해 비로소 좀 제대로 이해하게 되었다.
물론 이해와 사용은 또 다르니까 프로젝트 진행하며 열심히 적응해봐야겠다.
'공부 > [TIL] Digital Twin Bootcamp' 카테고리의 다른 글
TIL_220209_Git / Docker (1) | 2022.02.09 |
---|---|
TIL_220208_DevOps / Docker (0) | 2022.02.08 |
TIL_220204_HMI (0) | 2022.02.04 |
TIL_220128_토큰 관리 / 검색 / 로그인 (0) | 2022.01.28 |
TIL_220127_토큰 관리 (0) | 2022.01.27 |