์ด๋ฒ ํฌ์คํ ์์๋ MyBatis ๋ฅผ ์ฌ์ฉํ๋ SpringBoot ํ๋ก์ ํธ๋ฅผ Docker ์์ ์คํํด๋ณด๋ ๊ณผ์ ์ ์ ์ด๋ณด๋ ค๊ณ ํ๋ค.
โ ์ฐ์ Eclipse ์ ์ ์ํ์ฌ SpringBoot ํ๋ก์ ํธ์ ์ค์ ๋ถํฐ ํ์ธํ๋ค. MyBatisProject/pom.xml ์ dependency ๋ก mysql ๊ณผ mybatis ๋ฅผ ์ฃผ์ ํด์ค๋ค.

โ ๊ทธ๋ฆฌ๊ณ war ํ์ผ๋ก export ํ๊ธฐ ์ํด์ <packaging>jar</packaging> ๋ฅผ war ๋ก ๋ฐ๊ฟ์ค๋ค.

โ mybatis-config.xml ์ DB ์ฐ๋ํ๋ ์ ๋ณด๋ฅผ ์์ฑํ๋ค.

โ mysql ๊ณผ tomcat ์ด๋ฏธ์ง๋ฅผ ์ค์ ํ ํ docker hub ์ push ํ๊ณ pull ๋ฐ์์ ์ฌ์ฉํ๋ค.
# docker ์ค์น
sudo apt-get install docker
sudo apt-get install docker.io
# tomcat ์ด๋ฏธ์ง container ์คํ
sudo docker pull tomcat:9
# volume
sudo docker run -d --name="tomcat-test" -p 8383:8080 \
-v /home/tiger/webapps:/usr/local/tomcat/webapps/ tomcat:9
# tomcat container ๋ฅผ docker hub ์ push
sudo docker commit tomcat-test(์ปจํ
์ด๋ ์ด๋ฆ) tomcat_test:latest(์ด๋ฏธ์ง ์ด๋ฆ)
sudo docker tag tomcat_test:latest wjdalsdkcla/tomcat-test
sudo docker login
sudo docker push wjdalsdkcla/tomcat-test (docker hub ๋ ํ์งํ ๋ฆฌ)
# docker hub ์ ์ฌ๋ฆฐ tomcat ์ด๋ฏธ์ง pull
sudo docker pull wjdalsdkcla/tomcat-test:latest
# volume
sudo docker run -d --name="tomcat-test" -p 8383:8080 \
-v /home/tiger/webapps:/usr/local/tomcat/webapps/ \
wjdalsdkcla/tomcat-test:latest
# mysql ์ด๋ฏธ์ง container ์คํ
sudo docker pull mysql:latest
# volume
sudo docker run -it --name mysql-container -p 3380:3306 \
-v /home/tiger/db_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=mysql๋น๋ฒ \
-d mysql:latest
# mysql container ๋ฅผ docker hub ์ push
sudo docker commit mysql-container(์ปจํ
์ด๋ ์ด๋ฆ) mysql-test:latest(์ด๋ฏธ์ง ์ด๋ฆ)
sudo docker tag mysql-test:latest wjdalsdkcla/mysql-test
sudo docker login
sudo docker push wjdalsdkcla/mysql-test (docker hub ๋ ํ์งํ ๋ฆฌ)
# docker hub ์ ์ฌ๋ฆฐ mysql ์ด๋ฏธ์ง pull
sudo docker pull wjdalsdkcla/mysql-test:latest
# mysql ์ด๋ฏธ์ง container ์คํ
# volume
sudo docker run -it --name mysql-container -p 3380:3306 \
-v /home/tiger/db_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=mysql๋น๋ฒ \
-d wjdalsdkcla/mysql-test:latest
# mysql ์ ์ ํ ๊ณ์ ์ค์
sudo docker exec -it mysql-container /bin/bash
> mysql -u root -p
> use mysql;
> CREATE USER 'user1'@'%'IDENTIFIED BY '1234';
> GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%';
> FLUSH PRIVILEGES;
> exit
> mysql -u user1 -p
tomcat ์ด๋ฏธ์ง๋ฅผ ์คํํ ๋ volume (-v) ์ ์ฌ์ฉํ๋ค.
volume ์ docker ์ ๊ฒฝ๋ก์์ ๋ก์ปฌ์ ๊ฒฝ๋ก์ ์๋ ํ์ผ์ ์ฐธ์กฐํด์ ์ฌ์ฉํ ์ ์๋ ๋ช ๋ น์ผ๋ก, container run ํ ๋๋ง๋ค -v ๋ช ๋ น์ผ๋ก ๊ทธ ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ค์ผ ํ๋ค.
sudo docker run -d --name="tomcat-test" -p 8383:8080 \
-v /home/tiger/webapps:/usr/local/tomcat/webapps/ tomcat:9
๐ก ์์ command ์์ -v ๋ช ๋ น์ด ์ํ๋๋ ๊ณผ์ ์ ๋๋ต ์ด๋ฌํ๋ค. ์ฌ์ฉ์๊ฐ ๋ฆฌ๋ ์ค์ ๋ก์ปฌ์ธ home/tiger ์์ webapps ํด๋๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์ ROOT.war ํ์ผ์ ๋ฃ๋๋ค. ๊ทธ๋ฌ๋ฉด command ๋ก copy๋ฅผ ๋ฐ๋ก ํด์ฃผ์ง ์๋๋ผ๋ docker ์ usr/local/tomcat/webapps/ ๊ฒฝ๋ก์ ROOT.war ํ์ผ์ด ์ฐธ์กฐ๋๋ค. ๋ค๋ง, -v ๋ช ๋ น์ผ๋ก docker ์์ ROOT.war ํ์ผ์ ์ฐธ์กฐํ์ฌ ์ ์์ ์ผ๋ก ์คํ๋๋ค๊ณ ํด์ ๊ทธ war ํ์ผ์ด ์ด๋ฏธ์ง์ ๊ณ์ ๋จ์์๋ ๊ฒ์ ์๋๋ค. ์ฆ, dokcer ์์ local ์ ROOT.war ํ์ผ์ ์ฐธ์กฐํ์ฌ ์ ์์ ์ผ๋ก ์คํ๋๋ ์ด๋ฏธ์ง๋ฅผ docker hub ์ push ํ๊ณ ๋ค์ pull ๋ฐ์์ -v ๋ช ๋ น ์์ด ์คํํด๋ณด๋ฉด ๊ทธ war ํ์ผ์ docker ์ ๋จ์์์ง ์๋ค. -v ๋ช ๋ น์ ์คํํด์ local ํด๋์ ์๋ ROOT.war ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ฃผ๋ฉด docker ์ tomcat/webapps/ ๊ฒฝ๋ก๋ก war ํ์ผ์ด ์ฐธ์กฐ๋์ด ๋ค์ด๊ฐ๊ณ ์คํ์ด ์ ์์ ์ผ๋ก ๋๋ ๊ฒ์ด๋ค.


mysql ์ด๋ฏธ์ง๋ฅผ ์คํํ ๋์๋ volume (-v) ์ ์ฌ์ฉํด๋ณด์๋ค.
sudo docker run -it --name mysql-container -p 3380:3306 \
-v /home/tiger/db_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=mysql๋น๋ฒ \
-d wjdalsdkcla/mysql-test:latest
๐ก ์์ command ์์ -v ๋ช ๋ น์ด ์ํ๋๋ ๊ณผ์ ์ ๋๋ต ์ด๋ฌํ๋ค. ์ฌ์ฉ์๊ฐ ๋ฆฌ๋ ์ค์ ๋ก์ปฌ์ธ home/tiger ์์ db_data ํด๋๋ฅผ ๋ง๋ค๊ณ command ๋ฅผ ์คํํ๋ค. ๊ทธ๋ฌ๋ฉด docker ์ var/lib/mysql ๊ฒฝ๋ก์ ์ ์ฅ๋๋ db data ์ ๋ณด๋ค์ด ์ฐธ์กฐ๋์ด ๋ก์ปฌ์ db_data ํด๋์ ๋ฐฑ์ ์ด ๋๋ค. ์ฌ์ฉ์๊ฐ docker์ mysql ์ ์ ์ํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค db01 ๊ณผ db02 ๋ฅผ ๋ง๋ค๊ณ db01 ๋ฐ์ดํฐ๋ฒ ์ด์ค์ president ์ citizen ํ ์ด๋ธ์ ๋ง๋ค๋ฉด ๊ทธ ์ ๋ณด๊ฐ ๋ก์ปฌ์ db_data/db01/ ๊ฒฝ๋ก์ ์ ์ฅ์ด ๋๋ค. ์ด ํด๋๋ ๋ก์ปฌ์์ ๊ณ์ ์ ์ง๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ปจํ ์ด๋๋ฅผ ์คํํ ๋์๋ db_data ๋ด์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํด์ ์ฌ์ฉํ ์ ์๋ค. ๋ค๋ง, mysql ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธ(insert, update, delete) ํ๊ณ ๋์ ํด๋น ์ด๋ฏธ์ง๋ฅผ docker hub ์ push ํ๊ณ ๋์ ๋ค์ pull ๋ฐ์๋ณด๋ฉด ์ด๋ฏธ์ง์ ๊ทธ ๋ฐ์ดํฐ๋ ๋์ด์ ๋จ์์์ง ์๋ค. ๋ค๋ง ๋ก์ปฌ์ db_data ์ ๋ณด๊ฐ ๋จ์์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ์ ์ง๋๋ค.



๐ก volume ๊ณผ mount ์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น?
-v (volume) ์ ๋ชจ๋ ์ต์ ์ ํ๋๋ก ๊ฒฐํฉํ๋ ๋ฐ์ ๋นํด --mount ๋ ์ต์ ์ ๋ถ๋ฆฌํจ์ผ๋ก์จ ๋ ๋ช ํํ๋ค.
docker volume ์ ๋ํ ๊ณต์ ๋ฌธ์ : https://docs.docker.com/storage/volumes/


โ docker hub ์ ์ด๋ฏธ์ง๊ฐ ์ ์์ ์ผ๋ก ์ ๋ก๋ ๋ ๊ฒ์ ํ์ธํ๋ค.

โ docker-compose ์์ docker hub์ ์ ๋ก๋ ๋ ์ด๋ฏธ์ง๋ค์ ๋ฐ์์ ์ฌ์ฉํ๋ค.


โ docker-compose.yml ํ์ผ์ ์์ฑํ๋ค.

โ docker-compose ํ์ผ ํน์ ํ๋ก์ ํธ๋ฅผ github ์ ์ ๋ก๋ ํ๊ณ clone ์ ๋ฐ๋๋ค.
# ๊น ์ค์น
sudo apt-get install git -y
# ๊น ํด๋ก
git clone https://github.com/qwa310/compose-test.git
cd ๊นํด๋ก ๋ฐ์ ํด๋ # docker-compose.yml ์ด ์๋ ํด๋๊น์ง ๋ค์ด๊ฐ๋ค.
# docker compose ์คํ
docker-compose up -d
โ docker-compose.yml ์ด ์๋ ๊ฒฝ๋ก๊น์ง ๋ค์ด๊ฐ์ sudo docker-compose up -d ๋ช ๋ น์ด๋ฅผ ์ํํ๋ค.
์ปจํ ์ด๋๋ฅผ ์ค์งํ๊ณ ์ญ์ ํ ๋๋ sudo docker-compose down ๋ช ๋ น์ด๋ฅผ ์ํํ๋ค.

โ web ์คํ ๋ฐ DB ์ฐ๋ ํ์ธ
์น ์คํ


DB ์ฐ๋

'Server > Docker' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Docker] Docker ๋ช ๋ น์ด ์ ๋ฆฌ (0) | 2021.10.10 |
---|---|
[Docker] Docker ๋ก MySQL ๊ณผ Tomcat ์ฌ์ฉ (with docker-compose & VSCode) (0) | 2021.10.02 |
[Docker] Ubuntu ์์ Docker Compose ์คํ (with Github, VirtualBox) (0) | 2021.10.01 |
[Docker] Docker ๊ฐ์ด๋ ๋ฐ๋ผํด๋ณด๊ธฐ (0) | 2021.10.01 |
[Docker] Docker ์ค์น ๋ฐ ์์ํ๊ธฐ (0) | 2021.09.30 |
๋๊ธ