harry.93 2021. 9. 20. 22:59
๋ฐ˜์‘ํ˜•

1. ๊ฐœ์š”

1. ํ•„์š”์„ฑ 

ํ•จ์ˆ˜๋‚˜, ๊ธฐํƒ€ ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ด ์ƒ๊ฒผ์„ ๋•Œ, ๋ณดํ†ต ๋ฌธ์„œ๋‚˜ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๋ณดํ†ต์ด์—ˆ๋Š”๋ฐ ์ด๋ ‡๋‹ค ๋ณด๋‹ˆ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š์„ ๋ฟ๋”๋Ÿฌ, ์ฐพ๊ธฐ๊ฐ€ ํž˜๋“ค๊ณ  ํ‰์†Œ์— ์–ด๋–ค ๋‚ด์šฉ์ด ๋‹ด๊ฒจ์ ธ ์žˆ๋Š”์ง€ ํ™•์ธ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜์˜€๋‹ค. ๊ฐœ์ธ์ ์ธ ์šฉ๋„๋‚˜ ํ˜น์€ ์‚ฌ๋‚ด์— ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•œ  API Developer Document ์ฒ˜๋Ÿผ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์˜€๋‹ค.

 

2. ๋ชฉ์ 

๋ชฉ์ ์€ ํ•„์š”์„ฑ๊ณผ ๊ฐ™์€ ๋งฅ๋ฝ์œผ๋กœ, ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ํ•จ์ˆ˜๋‚˜ ๊ธฐํƒ€ ํด๋ž˜์Šค ๋“ฑ์„ ์ •๋ฆฌํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ๋‚ด๋ถ€ ์ธ์›์—๊ฒŒ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ์™ธ๋ถ€ ์ธ์›์—๊ฒŒ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ”„๋กœ์ ํŠธ ๋ณ„ ํ˜น์€ ํ”„๋ ˆ์ž„์›Œํฌ ๋ณ„๋กœ ์ •๋ฆฌ๋œ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑ ๋ฐ ๊ณต์œ  ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

 

3. ์‚ฌ์šฉ ๊ธฐ์ˆ  ์Šคํƒ

Front : HTML & Vue.js

Back : Spring Boot Framework + Gradle

DB : RDB ( MYSQL / ORACLE ) or etc.

 

4. ์„œ๋น„์Šค ๊ตฌ์กฐ (์ดˆ์•ˆ)

Spring Boot Framework ๊ตฌ์„ฑ ์‹œ, ํŠธ๋žœ์žญ์…˜๊ณผ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ์ •๋„๋Š” ํฌํ•จํ•˜์—ฌ ๊ตฌ์„ฑํ•˜๋ ค๊ณ  ์ƒ๊ฐ ์ค‘์ด๋‹ค.

๋˜ํ•œ ๋กœ๊ทธ ์ฒ˜๋ฆฌ ๊ฐ™์€ ๊ธฐ๋ณธ์ ์ธ ๋ถ€๋ถ„๋„ Boot Project ๋Š” ์ฒ˜์Œ์ด๋ผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ง„ํ–‰ํ•  ์˜ˆ์ •์ด๋‹ค.

 

๊ทธ ์™ธ์— ์ถ”๊ฐ€์ ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ SPA ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑ์„ ํ• ๊นŒ ์ƒ๊ฐ ์ค‘์ธ๋ฐ, ์ ์šฉ์„ ํ•  ์ˆ˜ ์žˆ์„ ์ง€ ์˜๋ฌธ์ด๋‹ค.

์œ„ ๊ฐœ๋…์„ ๊ฐ€์ง€๊ณ  ์ ‘๊ทผํ•ด๋ณผ ์ƒ๊ฐ์ด๋ฉฐ, ํ™”๋ฉด์„ค๊ณ„ ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ์ง„ํ–‰ํ•ด๋ณผ ์˜ˆ์ •์ด๋‹ค.

 

2. ๊ฐ„๋‹จํ•œ ํ™”๋ฉด ์„ค๊ณ„

๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐ๋‚ฌ๋˜ ์•„์ด๋””์–ด ๋ฐ ํ™”๋ฉด ๋‚ด์šฉ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ํŒŒ์›Œํฌ์ธํŠธ๋กœ ์„ค๊ณ„ํ•ด๋ณด์•˜๋‹ค.

์ถ”ํ›„ ์ง„ํ–‰ ๋˜๋Š” ํ•œ๋ฒˆ ๋” ๋ณด๋ฉด์„œ ์ˆ˜์ •ํ•ด ๋‚˜๊ฐˆ ์˜ˆ์ •์ด๋‹ค.

 

3. Spring Boot ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰

ํ”„๋กœ์ ํŠธ์— DB๋ฅผ ์—ฐ๋™ํ•ด์•ผ ํ•ด์„œ, ๊ณ ๋ฏผ์„ ํ•ด๋ณธ ๊ฒฐ๊ณผ ...

์ €์žฅ๋  ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์ง€ ์•Š๊ณ , ํ…Œ์ด๋ธ”๋„ ๋งŽ์ด ํ•„์š”ํ•œ๊ฒŒ ์•„๋‹ˆ๋ผ์„œ No SQL ์ชฝ์„ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ ์‚ฌ์‹ค์ƒ ์š”๊ธˆ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์„œ ์–ด๋А์ •๋„ ํ…Œ์ŠคํŠธ์™€ ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„ ๋А๋‚Œ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š”๋ฐ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์•„ RDB๋ฅผ ๊ทธ๋ƒฅ ์—ฐ๋™ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

DB๋Š” ORACLE ์ด๋ฉฐ, ์šฐ์„  ORACLE ๋กœ ์—ฐ๊ฒฐ ๋˜๋Š” ๋ถ€๋ถ„์„ ํ™•์ธ ํ›„์—, MYSQL ๊นŒ์ง€ ์—ฐ๋™ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์ˆ˜์ •ํ•  ์˜ˆ์ •์ด๋‹ค.

์šฐ์„ , ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

- JDK11
- Spring Boot

๊ธฐ๋ณธ์ ์œผ๋กœ vscode extension ์—์„œ ์ƒ์„ฑํ•˜๋Š” ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

DB ํ™˜๊ฒฝ์€ HikariCP๋ฅผ ์ด์šฉํ•˜์—ฌ Oracle ๊ณผ Connection ์„ ๋งบ๊ณ , log4j ๋ฅผ ํ†ตํ•ด DB ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ•˜์˜€๋‹ค. ๊ทธ๋ฆฌ๊ณ , DB mapper ์—ฐ๋™์€ MyBatis ๋ฅผ ํ†ตํ•ด ์ง„ํ–‰ํ•œ๋‹ค.

 

1. ํ•„์š” Dependency ์ถ”๊ฐ€.

// https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter
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'   

// https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8
implementation group: 'com.oracle.database.jdbc', name: 'ojdbc8', version: '21.1.0.0'

DB ์ปค๋„ฅ์…˜์„ ์œ„ํ•ด์„œ๋Š” ojdbc ๋˜ํ•œ ํ•„์š”ํ•˜๋‹ค. ๋ฒ„์ „๋งˆ๋‹ค ์ง€์›ํ•˜๋Š” JDK ๋ฒ„์ „์ด ๋‹ค๋ฅด๋‹ˆ ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค.

 

2. application.yml ์ž‘์„ฑ

๋ณดํ†ต ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ํ›„์—๋Š” application.properties ๋กœ ๋˜์–ด์žˆ์ง€๋งŒ, ํŽธ์˜๋ฅผ ์œ„ํ•ด yml ํŒŒ์ผ๋กœ ๋ฐ”๊พธ์—ˆ๋‹ค. ๊ทธ๋Œ€๋กœ properties ๋กœ ์ง„ํ–‰ํ•ด๋„ ์ƒ๊ด€ ์—†์œผ๋‚˜, ํ‘œ๊ธฐ๋ฒ•์ด ๋‹ค๋ฅด๋‹ค.

# /resource/application.yml 

spring:
    application:
        name: springboot-project-name

    # DB Connection 
    datasource:
        hikari:
            jdbc-url: jdbc:log4jdbc:oracle:thin:@{oracle-db-url} # ex ) localhost:3306:utf8
            driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
            username: {user-name}
            password: {user-password}
            maximum-pool-size: {connection-pool-size}

DB์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. 

 

3. log4j properties ์ž‘์„ฑ

log4j ํ”„๋กœํผํ‹ฐ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ์ž์„ธํ•œ ๊ฑด ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜, ๋ณดํ†ต ์ด๋ ‡๊ฒŒ ์„ธํŒ…ํ•˜๊ณ  ์จ์„œ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™”๋‹ค.

# /resource/log4j. log4jdbc.log4j2.properties.yml 

log4jdbc.spylogdelegator.name = net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength = 0

#Disable - Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
log4jdbc.auto.load.popular.drivers = false

 

4. logback ์ž‘์„ฑ

๋กœ๊ทธ๋ฅผ ์–ด๋–ค ํ˜•์‹์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ถœ๋ ฅํ•  ๊ฒƒ์ด๋ฉฐ, ๋กœ๊ทธ ๋ ˆ๋ฒจ์„ ์ง€์ •ํ•œ๋‹ค.

# /resource/logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<layout class="ch.qos.logback.classic.PatternLayout">
			<Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
		</layout>
	</appender>
	<appender name="SAMPLE" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss}:%-3relative][%thread] %-5level %logger{35} - %msg%n</pattern>
		</encoder>
	</appender>

	<logger name="{project-package-dir}" level="DEBUG" additivity="false">
		<appender-ref ref="SAMPLE" />
	</logger>
	<root level="INFO">
		<appender-ref ref="STDOUT" />
	</root>
	<logger name="jdbc" level="OFF" />
	<logger name="jdbc.sqlonly" level="OFF" />
	<logger name="jdbc.sqltiming" level="DEBUG" />
	<logger name="jdbc.audit" level="OFF" />
	<logger name="jdbc.resultset" level="OFF" />
	<logger name="jdbc.resultsettable" level="DEBUG" />
	<logger name="jdbc.connection" level="OFF" />
</configuration>

 

5. mybatis config ์ž‘์„ฑ

Mybatis ์„ค์ •์„ ์ž‘์„ฑํ•œ๋‹ค. ํ•„์š”ํ•œ ์˜ต์…˜๋งŒ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ž‘์„ฑํ•˜์˜€๋‹ค.

# /resource/mybatis/mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <settings>
    <setting name="mapUnderscoreToCamelCase" value="true" />
    <!-- column์ด NULL ์ผ ๊ฒฝ์šฐ์—๋„ ์ถœ๋ ฅ -->
    <setting name="callSettersOnNulls" value="true" />
    <!-- row๊ฐ€ NULL ์ผ ๊ฒฝ์šฐ์—๋„ ์ถœ๋ ฅ -->
    <setting name="returnInstanceForEmptyRow" value="true" />
  </settings>
</configuration>

 

6. DB config java ํŒŒ์ผ ์ž‘์„ฑ

์‹ค์ œ๋กœ ์ปค๋„ฅ์…˜ ์‹œ, ์‚ฌ์šฉํ•  DataSource ์™€ Sql Session Template ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ž‘์„ฑํ•œ๋‹ค.

mapper ์™€ ์„ค์ • ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

# {package-dir}/config/DBconfig.java

import javax.sql.DataSource;

import com.zaxxer.hikari.HikariDataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

@Configuration
@MapperScan(basePackages = "{repositoey-dir}")
public class DatabaseConfig {

    @Bean
    @ConfigurationProperties("spring.datasource.hikari")
    public DataSource dataSource() {
        return DataSourceBuilder.create().type(HikariDataSource.class).build();
    }

    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        sessionFactory.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));
        Resource myBatisConfig = new PathMatchingResourcePatternResolver()
                .getResource("classpath:mybatis/mybatis-config.xml");
        sessionFactory.setConfigLocation(myBatisConfig);

        return sessionFactory.getObject();
    }

    @Bean
    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) throws Exception {
        final SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
        return sqlSessionTemplate;
    }
}

 

์—ฌ๊ธฐ๊นŒ์ง€ ์ž‘์„ฑํ•˜๊ณ , ๊ฐ Service ์™€ Repository ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ”๋กœ ํ…Œ์ŠคํŠธ ๋ฐ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ–ˆ๋‹ค. 

๊ฐ ๋‚ด์šฉ๋“ค์€ ๊นƒํ—™์— ์ •๋ฆฌํ•˜์—ฌ ์˜ฌ๋ ค๋†“์•˜๋‹ค. 

๋ฌด์–ธ๊ฐ€ ๋ฐ”๋กœ๋ฐ”๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ์ด๋Ÿฐ ํ€ต ์Šคํƒ€ํŒ…์ด ๊ฐ€๋Šฅํ•œ ์ฑ„๋กœ ์„ธํŒ…์ด ๋˜์–ด์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ ์ด๋Ÿฐ ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•  ๋•Œ๋งˆ๋‹ค ๊นƒํ—™์— ์˜ฌ๋ ค๋†“๊ณ  ์“ฐ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. 

https://github.com/Chiptune93/Library/tree/main/Spring/QuickStart/SpringBoot/JDK11/Mybatis%2BHikariCP%2BOracle

 

GitHub - Chiptune93/Library: My Java Util Class

My Java Util Class. Contribute to Chiptune93/Library development by creating an account on GitHub.

github.com

 

4. ํ”„๋กœ์ ํŠธ ์™„์„ฑ ๋ฐ ์šด์˜ํ™˜๊ฒฝ ๊ฒฐ์ •

ํ”„๋กœ์ ํŠธ ๊ธฐ๋Šฅ ๊ตฌ์„ฑ์„ ๋๋‚ด๊ณ , ํผ๋ธ” ์ž‘์—…์„ ๋ถ€ํƒํ–ˆ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ์‹ฌํ”Œํ•˜๊ฒŒ ๋‚˜์™€์„œ ํ™”๋ฉด ์„ค๊ณ„ ๋งŒํผ ๋ณต์žกํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋˜์—ˆ๊ณ 

๋กœ๊ทธ์ธ ๊ฐ™์€ ๊ธฐ๋Šฅ๋„ ๋นผ๊ณ  ๋Œ€์‹  ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์˜ ๋ณ€ํ™˜์„ ํ‚ค๋ณด๋“œ ์ž…๋ ฅ์„ ํ†ตํ•ด ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

์ด๋Ÿฐ ์‹์œผ๋กœ ํŽ˜์ด์ง€๋Š” ์™„์„ฑ์ด ๋˜์—ˆ๊ณ , ์ด๋ฅผ ์ด์ œ ์–ด๋–ป๊ฒŒ ์šด์˜ํ•  ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•œ ๋ฌธ์ œ๊ฐ€ ๋‚จ์•˜์—ˆ๋‹ค.

์ตœ๊ทผ, ํ”„๋กœ์ ํŠธ ํ•˜๋‚˜๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ Docker๋ฅผ Study ํ•˜๊ธฐ๋„ ํ–ˆ๊ณ , ํšŒ์‚ฌ ๋‚ด๋ถ€์—์„œ๋„ ์ด๋ฅผ ์œ„ํ•œ ์„œ๋ฒ„๋ฅผ ํ•˜๋‚˜ ๋งˆ๋ จํ•œ ์ƒํƒœ์˜€๋‹ค. ๋”ฐ๋ผ์„œ, ๋‚˜๋Š” ์ด ํ”„๋กœ์ ํŠธ๋ฅผ Docker ์ด๋ฏธ์ง€ํ™” ํ•˜์—ฌ Docker ์„œ๋ฒ„์— ์˜ฌ๋ ค ์šด์˜ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  DB ๋˜ํ•œ ์ตœ๊ทผ ์ง„ํ–‰ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•œ Postgresql ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•˜๊ณ  ์ด๊ฒƒ ๋˜ํ•œ, ์„œ๋ฒ„์— ์˜ฌ๋ ค๋†“๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ ์„œ๋ฒ„์—์„œ ์ž‘์—…ํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

1. Docker & Docker Compose ์„ค์น˜.

2. Docker Image pull ๋ฐ›๊ธฐ > Postgresql, ๋งŒ๋“  ํ”„๋กœ์ ํŠธ์˜ image

3. Docker run์œผ๋กœ run ์‹œํ‚ค๊ธฐ.

 

- Dockerfile

FROM adoptopenjdk/openjdk11
EXPOSE 8080:8080
ARG WAR_FILE=build/libs/api.war
COPY ${WAR_FILE} api.war
ENTRYPOINT [ "java", "-jar", "/api.war" ]

 

๋‹จ์ˆœํ•˜๊ฒŒ war๋กœ ๋ง๋ฆฐ ์ด๋ฏธ์ง€๋ฅผ run ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

- ์‚ฌ์šฉํ•œ Command

1. build

docker build -t api:1.0 .

2. docker run

docker run -d -p 8080:8080 --name syworks-api api:1.0

3. docker push

docker push api:1.0

 

์ด๋กœ์จ ๋ญ”๊ฐ€ ๋น ๋ฅด๊ฒŒ ๋น ๋ฅด๊ฒŒ ์ฒซ Spring Boot + Vuejs ํ”„๋กœ์ ํŠธ๋Š” Docker๊ธฐ๋ฐ˜์œผ๋กœ ์šด์˜ํ•˜๊ธฐ๋กœ ํ•˜๋Š” ๋ฐ”๋žŒ์— ์ƒ๊ฐ๋ณด๋‹ค ๊ธˆ๋ฐฉ ๋๋‚˜๊ฒŒ ๋˜์—ˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ, ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์šด์˜์— ์˜ฌ๋ฆฌ๋ฉด์„œ nginx๋ฅผ ์˜ฌ๋ ค์„œ ์—ฌ๋Ÿฌ๊ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ์šด์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ ๋‚ด๋ถ€์—์„œ ์ œ์•ˆํ•˜์…”์„œ ๊ทธ๊ฒƒ๋„ ๊ณ ๋ คํ•ด๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ์•„๋งˆ ๋‹ค์Œ๋ฒˆ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๊ณ ๋ คํ•ด๋ณด์•„์•ผ ๊ฒ ๋‹ค.

 

5. ์™„๋ฃŒ ๋ฐ ๊ณต์œ  

https://github.com/Chiptune93/DocumentsPage

 

GitHub - Chiptune93/DocumentsPage

Contribute to Chiptune93/DocumentsPage development by creating an account on GitHub.

github.com

 

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋Š” ๊ฐœ๋ฐœ ์ข…๋ฃŒ ํ•˜๊ณ , ๋‹ค์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์ƒํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค :D

728x90
๋ฐ˜์‘ํ˜•