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

    ๋ฐ˜์‘ํ˜•

    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
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€