신입개발자

gateway docker 실행 본문

개인 개발 공부

gateway docker 실행

dks_a 2023. 8. 31. 13:34

1. dockerfile

FROM openjdk:11
#CMD ["./mvnw", "clean", "package"]
ADD ./home /home
ADD ./config /config
ADD ./ssl /ssl
ADD ./logs /logs
RUN ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime && echo "Asia/Seoul" > /etc/timezone
ENV CONFIG /config
ENV GW_CFG /home/app/data/gw/conf
ENV GW_LOG /home/app/logs/gw
ENV GW_DATA /home/app/data/gw
ADD gw-server-log.jar app.jar
#CMD java -Djdk.tls.client.protocols=TLSv1.3,TLSv1.2 -Dreactor.netty.ioWorkerCount=200 -jar app.jar --spring.config.import=/config/application-docker.yaml
#EXPOSE 443
ENTRYPOINT ["sh", "-c", "java -Djdk.tls.client.protocols=TLSv1.3,TLSv1.2 -Dreactor.netty.ioWorkerCount=200 ${JAVA_OPTS} -jar app.jar ${0} ${@}"]
#ENTRYPOINT ["java", "${JAVA_OPTS}", "-jar", "app.jar"]

 

./home, ./config, ./ssl, ./logs : Dockerfile 위치에 존재하는 폴더

ADD 명령어를 통해 docker 내의 경로에 해당 폴더들을 추가

ENV : 환경 변수 설정, ADD 없이 ENV 만 한 경우 도커 내의 /home 관련 경로가 없기 때문에 image run 시 에러 발생

 

 

${JAVA_OPTS} : 자바 옵션 외부 설정

${@} : 명령인수

${0} : 명령

 

 

/config: 파일 안에 application-docker.yaml, application-docker2.yaml, application-docker3.yaml 만들어 놓음. 각각의 yaml에는 포트 다르게 설정

docker build -t [name] .

  • docker build -t gw-server .

도커파일 빌드 명령어 → gw-server란 이미지 생성

docker images

 

 

image run

  • ##docker run -p 443:443 -p 5001:5001 -e "JAVA_OPTS=-Ddebug -Xmx128m” --net test_default -d gw-server : 옵션 설정 가능

 

 

##docker run -p 443:443 -p 5001:5001 -e SPRING_PROFILES_ACTIVE=docker --net test_default -d gw-server

  • SPRING_PROFILES_ACTIVE=docker : application-docker.yml 로 프로파일 설정 실행
  • docker run -p 1443:443 -p 5010:5001 --net test_default -d gw-server --spring.config.import=./config/application-docker.yaml
  • docker run -p 2443:443 -p 5011:5001 --net test_default -d gw-server --spring.config.import=./config/application-docker.yaml
  • docker run -p 3443:443 -p 5012:5001 --net test_default -d gw-server --spring.config.import=./config/application-docker.yaml

: 도커 이미지 실행 → 컨테이너 생성

 

spring.config.import=./config/application-docker.yaml : 도커 내부의 /config에 있는 해당 yaml 적용

port 5001, 443 → 설정한 yaml파일에 맞게 포트 오픈

-p : 포트 바인딩 → yaml 설정과 동일하게 오픈 필요

-e : element 약자

--net [network name] : 해당 네트워크로 선택해서 실행, redis 실행 시킨 네트워크와 동일해야 실행하는데 문제 없음

-d : 백그라운드 실행

gw-server log 확인

- docker exec -it [container ID] /bin/bash

 

- cd logs

- tail -500f [로그 이름]

 

- exit : bash 종료

Dockerfile spring-boot 관련 옵션 정리 링크

Getting Started | Spring Boot Docker

 

Getting Started | Spring Boot Docker

The Spring Boot Maven and Gradle plugins use buildpacks in exactly the same way that the pack CLI does in the following examples. The resulting images are identical, given the same inputs. Cloud Foundry has used containers internally for many years now, an

spring.io

 

docker 기본 명령어

docker network ls : 도커 네트워크 목록 확인

docker ps : 실행 중인 컨테이너 목록 확인

docker ps -a : 모든 컨테이너 목록 확인

docker images : 도커 모든 이미지 목록 확인

docker image rm [image ID] : 도커 이미지 삭제 → 사용하고 있는 컨테이너가 없어야 가능

docker rm [container ID] : 도커 컨터이너 삭제

docker logs [container ID] : 컨테이너 로그 확인

docker exec -it [container ID] /bin/bash : 실행 중인 컨테이너의 bash 접속

 

'개인 개발 공부' 카테고리의 다른 글

Burp Suite  (0) 2023.08.31
gw-manger / portal docker 실행  (0) 2023.08.31
redis docker 실행  (0) 2023.08.31
Dockerizing Your Spring Boot Application  (0) 2023.08.31
Docker  (0) 2023.08.31
Comments