1. Java Service

@PostConstruct
public void started(){
    TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
    log.info("현재 시각 : "+new Date());
}

Docker 내 실행될 서버(Jar파일 형 이미지) 시간 설정한다. EC2에서 시간 설정을 하더라도 Jar파일로 되어있는 Docker 이미지가 가동되면 Docker Container 내 서버가 자동으로 시간을 할당해줘서 따로 설정을 해주어야 한다.

Application.java 파일 내 코드를 추가한다.

2. MariaDB

# Container 안으로 접근하여 언어와 시간설정이 어떻게 되어있는지 확인한 후, 설정을 변경해준다.
# 언어설정 확인
locale

# 시간설정 확인
Date

# 언어 및 시간설정
localedef -f UTF-8 -i ko_KR ko_KR.utf8
export LANG=ko_KR.utf8
export LC_ALL=ko_KR.utf8
# 현재 시간 확인
SELECT now();
SELECT CURRENT_TIMESTAMP;

# Timezone 확인
select @@system_time_zone;
SHOW GLOBAL VARIABLES LIKE '%zone%';

# Timezone 변경
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

# Timezone 직접 명시
SET GLOBAL time_zone='Asia/Seoul';
set time_zone='Asia/Seoul';

 

 

해당 글은 Notion에 정리한 글을 옮긴 글입니다.

https://seojeonghyeon0630.notion.site/Docker-Document-2734a3999d674848b49fbfce3639a178

'Docker' 카테고리의 다른 글

Container의 Log를 통한 Service 작동상태 확인  (0) 2022.05.14
Service 실행(Container 생성)  (0) 2022.05.14
파일 이미지(Jar) 생성 및 이미지 등록 및 배포  (0) 2022.05.14
Service File 생성  (0) 2022.05.14
Docker의 역할  (0) 2022.05.14
Docker 이미지 확인 docker images -a -a 는 전체
Docker 컨테이너 확인 docker container ls -a  
Docker 컨테이너 내부로 접속 docker exec -it 컨테이너이름 /bin/bash 전부 입력할 필요 없다.
Docker 컨테이너를 멈추고 삭제 docker stop fa7 && docker rm fa7  
Docker 내 안쓰고 있는 데이터들 정리 docker system prune  
Docker Log 확인 docker logs fa7  
Docker Log 지속 확인 docker -f logs fa7  

 

 

해당 글은 Notion에 정리한 글을 옮긴 글입니다.

https://seojeonghyeon0630.notion.site/Docker-Document-2734a3999d674848b49fbfce3639a178

'Docker' 카테고리의 다른 글

Docker 내 UTF-8 설정 및 시간 설정  (0) 2022.05.14
Service 실행(Container 생성)  (0) 2022.05.14
파일 이미지(Jar) 생성 및 이미지 등록 및 배포  (0) 2022.05.14
Service File 생성  (0) 2022.05.14
Docker의 역할  (0) 2022.05.14

1. config-service Container 생성

docker run -d -p 8888:8888 --network mood-network -e "spring.profiles.active=prod” --name config-service seojeonghyeon0630/config-service:0.0.1

생성한 Network에 Config서버 이미지를 실행한다.

  • -d : 백그라운드 실행
  • -p : 포트명 (in:out)
  • -e : 환경변수 설정

seojeonghyeon의 GitHub(Private) Repository : Mood-Config를 확인하면 3가지(default, dev, prod)로 업로드 하였다.

알맞는 설정에 맞춰 선택하여 해당 환경변수를 유동적으로 변경해주면 된다.

2. discovery-service Container 생성

docker run -d -p 8761:8761 --network mood-network \\
-e "spring.cloud.config.uri=http://config-service:8888" \\
--name mood-web seojeonghyeon0630/mood-web:0.0.1

3. API Gateway-service Container 생성

docker run -d -p 8000:8000 --network mood-network \\
-e "spring.cloud.config.uri=http://config-service:8888" \\
-e "eureka.client.serviceUrl.defaultZone=http://mood-web:8761/eureka/" \\
--name apigateway-service seojeonghyeon0630/apigateway-service:0.0.1

4. MariaDB Conatiner 실행 및 권한 설정

docker run -d -p 3306:3306 --network mood-network --name mariadb seojeonghyeon0630/my_mariadb:0.0.1

내려받은 MariaDB 이미지를 토대로 Bridge Network에 포함시켜서 컨테이너를 생성한다.

docker exec -it mariadb /bin/bash

컨테이너 외부에서 접근 가능하게 설정하기 위해

데이터들이 온전하게 잘 들어갔는지 확인하기 위해 컨테이너 내부로 접근한다.

mysql -hlocalhost -uroot -p

MariaDB 로그인을 시도한다.

127.0.0.1은 외부 접근 설정을 해줘야 사용 가능하기 때문에 현재는 사용할 수 없다.

grant all privileges on *.* to 'root'@'%' identified by '비밀번호';

Database 중에 mysql, 사용하려는 Database로 접근해서 권한을 부여한다.

부여가 완료되었다면, 데이터베이스 내용들이 잘 들어가 있는지 검토한다.

5. 이외의 service

docker run -d --network mood-network \\
--name user-service \\
-e "spring.cloud.config.uri=http://config-service:8888" \\
-e "eureka.client.serviceUrl.defaultZone=http://mood-web:8761/eureka/" \\
-e “spring.datasource.url=jdbc:mariadb://mariadb:3306/mooddb” \\
-e "logging.file=/api-logs/users-ws.log" \\
seojeonghyeon0630/user-service:0.0.1

 

 

해당 글은 Notion에 정리한 글을 옮긴 글입니다.

https://seojeonghyeon0630.notion.site/Docker-Document-2734a3999d674848b49fbfce3639a178

1. 배포를 위한 파일(Jar) 생성

mvn clean compile package -DskipTests=true

해당 프로젝트 내, tartget파일이 보이는 위치에서 명령어를 실행한다.

이때, -DskipTests=true는 Test단계를 통과해야하는 경우에 사용한다.

명령어를 통한 방법 이외에 개발도구에서 maven package단계까지 실행해도 동일하다. 이 명령어를 통해 Jar파일 생성한다.

2. Service File Build

docker build --tag seojeonghyeon0630/user-service:0.0.1 .

DockerFile을 토대로 대상을 이미지화 한다.(DockerFile이 위치한 곳에서 실행한다.

  • -t : 태그이름
  • Version : pom.xml에 명시한 버전 및 jar파일 생성시 사용한 버전
docker build --tag(or -t) (Docker계정)/(Service명):(Version) .(위치)

3. Service File Push

docker push seojeonghyeon0630/user-service:0.0.1

Local에 존재하는 이미지 파일을 Docker Repository로 전송한다.

4. Service File Pull

docker pull seojeonghyeon0630/user-service:0.0.1

Container를 생성하고자 하는 서버로 가서 Repository 내 이미지 파일을 내려받는다.

5. Docker Bridge Network 생성

docker network create --gateway 172.18.0.1 --subnet 172.18.0.0/16 mood-network

Docker Bridge Network를 172.18.0.1에서부터 subnet mask로 16으로 생성한다.

# Gateway : 172.18.0.1

# Subnet : 172.18.0.0/16

Docker network ls

생성된 Docker Network를 확인

기본적으로 제공하는 Network 3개와 추가로 설정한 1개의 Bridge Network를 확인 가능하다.

 

 

해당 글은 Notion에 정리한 글을 옮긴 글입니다.

https://seojeonghyeon0630.notion.site/Docker-Document-2734a3999d674848b49fbfce3639a178

'Docker' 카테고리의 다른 글

Docker 내 UTF-8 설정 및 시간 설정  (0) 2022.05.14
Container의 Log를 통한 Service 작동상태 확인  (0) 2022.05.14
Service 실행(Container 생성)  (0) 2022.05.14
Service File 생성  (0) 2022.05.14
Docker의 역할  (0) 2022.05.14

1. Dockerfile(Service)

# user-service의 Dockerfile
FROM openjdk:17-ea-11-slim
VOLUME /tmp
COPY target/user-service-0.0.1.jar UserService.jar
ENTRYPOINT ["java","-jar","UserService.jar"]
  • FROM절 : JDK 중 Light한 것으로 골라 넣어주었다.
  • VOLUME절 :
  • COPY절 : (현재 위치는 프로젝트 내 Root Point) target/user-service-0.0.1.jar파일을 UserService.jar 이미지로 복사
  • ENTRYPOINT절 : 엔트리 포인트로 해당 명령어를 삽입

2. Dockerfile(MariaDB)

# LocalPC에서 사용하던 MariaDB를 복사하기 위한 Dockerfile
FROM mariadb
ENV MYSQL_ROOT_PASSWORD 00000000
ENV MYSQL_DATABASE mooddb
COPY ./mysql_data/mysql /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["mysqld", "--user=root"]
  • FROM절 : mariadb
  • ENV절 : root password를 00000000로 설정하고 database를 mooddb로 사용
  • COPY절 : 해당 폴더 내 mysql을 가상공간의 해당위치로 복사
  • EXPOSE절 : 포트 번호는 3306을 사용
  • ENTRYPOINT절 : 엔트리 포인트로 해당 명령어를 삽입

옮길 자료가 없다면 굳이 databases를 통째로 옮길 필요없이, Docker에서 제공하는 이미지를 내려받아 사용하면 된다.

DockerFile 내용을 보면 mysql_data라는 폴더를 만들었고 데이터베이스 내용을 담고 있는 mysql폴더를 복사해왔다. 컨테이너가 생성되면 /var/lib/mysql에 복사되어 들어가게 된다.

 

 

해당 글은 Notion에 정리한 글을 옮긴 글입니다.

https://seojeonghyeon0630.notion.site/Docker-Document-2734a3999d674848b49fbfce3639a178

+ Recent posts