๐Ÿ”ŒDocker

[์‹ค์Šต] Docker Spring boot + Postgresql (1)

harry.93 2022. 1. 20. 13:42
๋ฐ˜์‘ํ˜•

Docker ๋ช…๋ น ์ฐธ๊ณ 

- ์กฐํšŒ

docker ps -a
-a : ์ •์ง€ ์ค‘ ํฌํ•จ

 

- ์ค‘์ง€

docker stop <container-id/container-name>

 

- ์‹œ์ž‘

docker start <container-id/container-name>

 

- ์žฌ์‹œ์ž‘

docker restart <container-id/container-name>

 

- ์ ‘์†

docker attach <container-id/container-name>

 

Postgrelsql 12.9-alpine Docker run

docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=<password> --name Postgresql postgres:12.9-alpine

 

- Postsql Volume ์ƒ์„ฑ ๋ฐ ํƒ‘์žฌ ํ›„ ๋Ÿฌ๋‹

docker create volume postgresql-sample

 

* /var/lib/postgresql/data ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ฒฝ๋กœ๋ฅผ ์ง€์ • ๋ฐ ์บก์ณ

docker run -d -p 5432:5432 -e POSTGRES_PASSWORD="{password}" -v postgresql-sample:/var/lib/postgresql/data --network boot-sample-network --name Postgresql postgres:12.9-alpine

 

 

์ดํ›„ localhost:5432 ๋กœ postgresql ์ ‘์†.

-- ์‚ฌ์šฉ์ž ์กฐํšŒ
select * from pg_user;

-- ์‚ฌ์šฉ์ž ์ƒ์„ฑ
create user test password 'test';

-- ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ƒ์„ฑ
create database test owner test

-- ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์กฐํšŒ
select datname from pg_database;

 

ํ…Œ์ŠคํŠธ์šฉ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

-- Drop table

-- DROP TABLE public.test_table;

CREATE TABLE public.test_table (
	"name" varchar(200) NULL,
	value varchar(200) NULL
);
COMMENT ON TABLE public.test_table IS 'test_table';

 

ํ…Œ์ŠคํŠธ์šฉ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…

INSERT INTO public.test_table ("name",value) VALUES
	 ('1','TEST_VALUE1'),
	 ('2','TEST_VALUE2'),
	 ('3','TEST_VALUE3'),
	 ('4','TEST_VALUE4'),
	 ('5','TEST_VALUE5'),
	 ('6','TEST_VALUE6'),
	 ('7','TEST_VALUE7'),
	 ('8','TEST_VALUE8'),
	 ('9','TEST_VALUE9'),
	 ('10','TEST_VALUE10');
INSERT INTO public.test_table ("name",value) VALUES
	 ('11','TEST_VALUE11'),
	 ('12','TEST_VALUE12'),
	 ('13','TEST_VALUE13'),
	 ('14','TEST_VALUE14'),
	 ('15','TEST_VALUE15'),
	 ('16','TEST_VALUE16'),
	 ('17','TEST_VALUE17'),
	 ('18','TEST_VALUE18'),
	 ('19','TEST_VALUE19'),
	 ('20','TEST_VALUE20');

 

DB์ค€๋น„ ์™„๋ฃŒ

 

Spring Boot 2.6.2 + jstl

- build.gradle ์„ค์ •

plugins {
	id 'org.springframework.boot' version '2.6.2'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

group = 'com.docker'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '8'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	
	// ์‚ฌ์šฉ์ž ์ถ”๊ฐ€

	// dev tool ( ์ •์  ๋ฆฌ์†Œ์Šค ์žฌ์‹œ์ž‘์—†์ด ์ ์šฉ )
	implementation group: 'org.springframework.boot', name: 'spring-boot-devtools'

	// mybatis-spring-boot
	implementation group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: '2.1.4'
	// log4j2
	implementation group: 'org.bgee.log4jdbc-log4j2', name: 'log4jdbc-log4j2-jdbc4.1', version: '1.16'   
	// jdbc ( postgresql - jdbc driver )
	implementation group: 'org.postgresql', name: 'postgresql', version: '42.3.1'


	// ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์žฅ ํ†ฐ์บฃ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ 
	// jsp ์—”์ง„์ด ์กด์žฌํ•˜์ง€ ์•Š์•„, jasper ์™€ jstl ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

	// jstl 
	implementation group: 'javax.servlet', name: 'jstl', version: '1.2'

	// jasper
	implementation group: 'org.apache.tomcat', name: 'tomcat-jasper', version: '9.0.56'



}

test {
	useJUnitPlatform()
}

 

- application.yml ์„ค์ •

spring:
    application:
        name: springboot-docker-sample

    # DB Connection ( localhost:5432 --> Docker Postgresql 5432 )
    datasource:
        hikari:
            # connect to host port
            #jdbc-url: jdbc:log4jdbc:postgresql://localhost:5432/test
            # connect to container port
            jdbc-url: jdbc:log4jdbc:postgresql://Postgresql/test
            driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
            username: test
            password: test
            maximum-pool-size: 5
    
    # mvc config 
    # ๋ทฐ ๊ฒฝ๋กœ ์ง€์ • ๋ฐ ํ™•์žฅ์ž ์„ค์ •

    # jar ํŒŒ์ผ๋กœ ์••์ถ•ํ•˜๋Š” ๊ฒฝ์šฐ, jsp ์ง€์› ์•ˆํ•˜๋ฏ€๋กœ ๊ธฐ๋ณธ ๊ฒฝ๋กœ๊ฐ€
    # META-INF/resources/WEB-INF/view ๊ฐ€ ๋œ๋‹ค.

    # develop ํ•„์š” ... 
    mvc:
        view:
            prefix: /WEB-INF/views/
            suffix: .jsp

    # devtool config
    # ์ •์  ๋ฆฌ์†Œ์Šค ์ˆ˜์ •์—๋„ ์žฌ์‹œ์ž‘ ์—†์ด ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ
    devtools: 
        livereload:
            enabled: true

 

** ๋™์ผ docker network ์ƒ์— ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ์ปจํ…Œ์ด๋„ˆ์˜ Name ๊ฐ’์ด {ip}:{port} ๊ฐ’๊ณผ ๋Œ€์น˜๋˜์–ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

- ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

sample ํ”„๋กœ์ ํŠธ

 

Docker Network ์ƒ์„ฑ

docker create network boot-sample-network

 

์ตœ์ข… Docker ์ด๋ฏธ์ง€ ์‹คํ–‰ ๋ช…๋ น

- postgresql ( M1 MAC ์—์„œ๋Š” " ๋ฅผ ' ๋กœ ๋ณ€๊ฒฝ )

docker run -d -p 5432:5432 -e POSTGRES_PASSWORD="{password}" -v postgresql-sample:/var/lib/postgresql/data --network boot-sample-network --name Postgresql postgres:12.9-alpine

 

- spring boot

docker run -d -p 8080:8080 --network boot-sample-network --name Boot-Sample boot-sample

 

- postgresql volume file

\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes ์— ์••์ถ•ํ•ด์ œ. (์œˆ๋„์šฐ๋งŒ)

* M1 Mac์—์„œ๋Š” ์ง์ ‘ ๊ฒฝ๋กœ๋กœ ๋„ฃ๋Š” ๋ถ€๋ถ„์„ ์ฐพ์ง€ ๋ชปํ•ด ๊ทธ๋ƒฅ ๋‹ค์‹œ ๋งŒ๋“ค์—ˆ๋‹ค ... 

postgresql-sample.zip
5.60MB

 

* ๊ฐ ์ด๋ฏธ์ง€๋Š” dklim93/<image-name> ์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ.

 

 

์ฐธ๊ณ  

- postgresql yml ์„ค์ •

https://csy7792.tistory.com/292

 

[Spring] PostgreSQL yml ์„ค์ •

spring boot PostgreSQL yml ์„ค์ •์ž…๋‹ˆ๋‹ค. spring: datasource: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://url:port/database username: id password: password

csy7792.tistory.com

 

- ์ •์  ์†Œ์Šค ์žฌ์‹œ์ž‘ ์—†์ด ๊ตฌ๋™

https://suzxc2468.tistory.com/186

 

์Šคํ”„๋ง๋ถ€ํŠธ(SpringBoot)์—์„œ ์žฌ์‹œ์ž‘ ์—†์ด ์ •์ ์†Œ์Šค(html, js, css) ๋ณ€๊ฒฝ ์ ์šฉํ•˜๊ธฐ

๋ณดํ†ต ์›นํ”„๋กœ์ ํŠธ๋ฅผ ์–ด๋”˜๊ฐ€์—์„œ ๋‚ด๋ ค๋ฐ›๋“ , ๊ณผ๊ฑฐ์— ๋ณธ์ธ์ด ์–ด๋–ค ์„ค์ •์„ ํ–ˆ๋“  ๋‹น์—ฐ ์‹œ ํ•˜๊ฒŒ ์ •์ ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ๋ฐ˜์˜๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ SpringBoot ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒˆ๋กœ๋งŒ๋“ค๊ณ  ์•„

suzxc2468.tistory.com

 

- web xml ์„ค์ • ์‚ฌ์šฉ

https://oingdaddy.tistory.com/356

 

Springboot ํ™˜๊ฒฝ์—์„œ web.xml ์˜ jsp-config ์‚ฌ์šฉํ•˜๊ธฐ (w.SpringBootServletInitializer)

์ผ์ „์— ๋˜‘๊ฐ™์€ ์ฃผ์ œ์— ๋Œ€ํ•ด ๊ธ€์„ ์ผ์—ˆ๋Š”๋ฐ ๋” ๊ดœ์ฐฎ์€ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์„œ ๋‹ค์‹œ ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณธ๋‹ค. ์ ์šฉ๋ฐฉ๋ฒ•์€ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๋‹ค. web.xml <?xml version="1.0" encoding="UTF-8"?> *.jsp UTF-8 false /WEB-INF/jsp/common/c..

oingdaddy.tistory.com

 

- docker Network ๊ณต์œ 

https://ooeunz.tistory.com/83

 

[Docker] Docker Network๋ฅผ ์ด์šฉํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ๊ณต์œ ํ•˜๊ธฐ

Docker Network๋ž€ ์‹คํ–‰๋œ ๊ฐ๊ฐ์˜ ์ปจํ…Œ์ด๋„ˆ๋ผ๋ฆฌ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋…ผ๋ฆฌ์ ์ธ ๋„คํŠธ์›Œํฌ์ž…๋‹ˆ๋‹ค. ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ์•ˆ์—์„œ๋Š” ๊ฐ๊ฐ์˜ ์ปจํ…Œ์ด๋„ˆ์˜ IP๋ฅผ ์ง€์ •ํ•ด์ฃผ๊ฑฐ๋‚˜ ํ•  ํ•„์š” ์—†์ด name๋งŒ์œผ๋กœ ์†์‰ฝ๊ฒŒ ๋„คํŠธ์›Œํฌ๋ฅผ

ooeunz.tistory.com

 

- docker Network ์„ค์ •

https://docs.docker.com/engine/reference/commandline/network_connect/

 

docker network connect

docker network connect: Connects a container to a network. You can connect a container by name or by ID. Once connected, the container can communicate with other containers in the...

docs.docker.com

 

- ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ ์„ค์ • ๊ด€๋ จ

https://atoz-develop.tistory.com/entry/spring-boot-web-mvc-static-resources

 

[์Šคํ”„๋ง ๋ถ€ํŠธ/MVC] ์ •์  ๋ฆฌ์†Œ์Šค(Static Resources) ๊ธฐ๋ณธ ์„ค์ •๊ณผ ์ปค์Šคํ…€ ๋ฐฉ๋ฒ•

[์Šคํ”„๋ง ๋ถ€ํŠธ/MVC] ์ •์  ๋ฆฌ์†Œ์Šค(Static Resources) ๊ธฐ๋ณธ ์„ค์ •๊ณผ ์ปค์Šคํ…€ ๋ฐฉ๋ฒ• ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์ •์  ๋ฆฌ์†Œ์Šค(static resources)์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๋งคํ•‘ ์„ค์ •๊ณผ ์ปค์Šคํ…€์„ ์ง€์›ํ•œ๋‹ค. ์‹ค์ œ๋กœ ํ™•์ธํ•ด๋ณด์ž. ์Šคํ”„๋ง ๋ถ€

atoz-develop.tistory.com

 

https://stackoverflow.com/questions/28725635/spring-boot-configure-it-to-find-the-webapp-folder

 

Spring boot: configure it to find the webapp folder

By default, Spring Boot looks in my src/main/webapp folder to find my html files. Where can I change the settings for Spring Boot if I use another folder to put the html files? Later, the files wi...

stackoverflow.com

 

- docker volume ์œˆ๋„์šฐ ๊ฒฝ๋กœ

\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes

 

 

๊ฐœ์„ ์‚ฌํ•ญ

- ๋ฐ์ดํ„ฐ ๊ณต์œ ๋Š” volume ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ(๋””๋ ‰ํ† ๋ฆฌ) ๊ณต์œ  ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝ > ์‰ฝ๊ฒŒ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

- ์Šคํ”„๋ง jsp ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ๋Š” ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ๋ณต์žกํ•˜์ง€ ์•Š์€ ๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝํ•  ๊ฒƒ.

 

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•