'Spring Boot'에 해당되는 글 3건

  1. 2021.01.11 Docker 추가 셋팅 2
  2. 2021.01.11 Docker 초기 셋팅 2
  3. 2020.04.29 Spring boot message property 다국어 대응

Docker 추가 셋팅

Programing 2021. 1. 11. 19:27
반응형

1. docker build -t 등을 매번 하지 않기 위해 docker-maven plugin 추가

pom.xml 파일 참조

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.4.1</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.hyun</groupId>
	<artifactId>DockTest</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>DockTest</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web-services</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<plugin>
			  	<groupId>io.fabric8</groupId>
			  	<artifactId>docker-maven-plugin</artifactId>
			  	<version>0.34.1</version>
			  	<configuration>
			  		<images>
			  			<image>
			  				<!-- 이미지를 만들 위치 -->
			  				<name>npre/springdockertest</name>
			  				<build>
			  				<!-- Dockerfile기본 위치는 src/main 이므로 프로젝트 베이스 폴더로 위치 지정(이것이 컨벤션임) -->
			  					<dockerFileDir>${basedir}</dockerFileDir>
			  					<filter>@</filter>
			  				</build>
			  			</image>
			  		</images>
			  	</configuration>
			  	<!-- mvn package 시 build 하도록 추가 설정 -->
			  	<executions>
			  		<execution>
			  			<id>docker-build</id>
			  			<phase>package</phase>
			  			<goals>
			  				<goal>build</goal>
		  				</goals>
			  		</execution>
		  		</executions>
		  	</plugin>
		</plugins>
	</build>

</project>

2. mvn clean package 로 이미지 생성

 

3. mvn docker:push 로 docker hub로 밀어넣기

 

4. 로컬에서 해당 이미지를 삭제하더라도 hub에 있으면 자동으로 pull 해와서 런 되는 상태 확인

Posted by npre
,

Docker 초기 셋팅

Programing 2021. 1. 11. 19:21
반응형

현재까지 작업 된 Docker 적용

 

1. Local (Mac 환경)에 Docker 설치 (차 후 Linux 환경에 설치 테스트 필요), 리눅스 환경은 AWS EC2에 구성 예정

 

2. Spring Boot Web 프로젝트 신규 생성 (환경 STS4)

Create Spring Starter Project

Java version 8

Spring Boot Version 2.4.1

Dependency에

Spring Web, Spring Web Service 추가하여 생성

 

3. Project Root 위치에 Dockerfile 생성 (대소문자 주의)

내용

 

FROM openjdk:8-jre

COPY target/DockTest-*.jar app.jar

ENTRYPOINT ["java", "-jar", "app.jar"]

 

(프로젝트 명이 DockTest임)

 

4. mvn install로 DockTest-0.0.1.jar 생성 (STS maven install로 생성)

 

5. Docker 이미지 생성

터미널에서 프로젝트 Root로 이동 

% docker build -t dockertest

 

#발생한 문제

"invalid reference format: repository name must be lowercase"

repo 이름은 소문자만 가능한듯

 

Docker 이미지 생성 확인

% docker images

REPOSITORY에서 생성 된 이미지 확인

 

6. Docker에서 생성 된 이미지 컨테이너에 올리기

% docker run -d -p 8080:8080 dockertest

 

백그라운드 실행을 위해 -d 옵션, 로컬 포트와 도커 포트를 동기화 하기 위하여 8080 옵션 설정

 

 

7. 실행 후 돌고 있는 컨테이너 확인

% docker ps

 

8. 돌고있는 컨테이너 킬

ps로 확인 한 CONTAINER ID넘버로 킬

docker stop container_id

docker rm container_id

 

9. 테스트로 생성 한 도커 이미지 삭제

docker rmi dockertest

 

 

 

'Programing' 카테고리의 다른 글

mvn install trouble shooting  (0) 2021.01.12
Docker 추가 셋팅  (2) 2021.01.11
[iOS] Splash Image 파일로 셋팅할때 주의할점  (1) 2020.06.08
Spring boot message property 다국어 대응  (0) 2020.04.29
iOS 13 Modal FullScreen 이슈  (0) 2020.04.27
Posted by npre
,
반응형

App 다국어 대응 중 서버에서 내려주는 값에 대해 지역화를 진행할 필요가 있었다.

 

DB에 language code 별로 row를 추가하여 localization을 처리하는 부분도 있었으나 단순히 국가명 등의 텍스트들까지 굳이 ERD를 바꿔가며 적용을 해야하나라는 고민을 하던 중 message property를 이용하여 지역화 대응을 하게 되었다.

 

MsgConfig.java

import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ResourceBundleMessageSource;

@Configuration
public class MsgConfig {

	@Bean
	public MessageSource messageSource() {
		ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
		messageSource.setBasenames("message/message");
		messageSource.setDefaultEncoding("UTF-8");
		
		return messageSource;
	}
}

위와 같이 설정하여 src/main/resources/message/ 하단에

이런식으로 지역화 메세지 프로퍼티를 넣었다.

 

사용부 예시

@Autowired
MessageSource msgSource;


Srting countryName = msgSource.getMessage("KR", null, Locale.forLanguageTag("en"))

MessageSouce를 걸어주고

 

"KR"은 properties의 key 값,

LanguageTag는 어느 파일에서 값을 가져올 것인지를 결정한다

만약 LanguageTag값에 맞는 프로퍼티 파일이 없는 경우 default 프로퍼티 (message.prorperties)의 Key 값에 매핑하여 값을 가져온다.

 

프로퍼티 파일 예시

message_ko.properties

# Country Name
KR = 대한민국
PH = 필리핀
VN = 베트남

message_en.properties

# Country Name
KR = Korea
PH = Philippines
VN = Vietnam

 

'Programing' 카테고리의 다른 글

Docker 초기 셋팅  (2) 2021.01.11
[iOS] Splash Image 파일로 셋팅할때 주의할점  (1) 2020.06.08
iOS 13 Modal FullScreen 이슈  (0) 2020.04.27
[iOS] UserDefault Setting  (0) 2016.05.17
[iOS] UITableView 좌측 여백 제거  (1) 2016.04.22
Posted by npre
,