티스토리 뷰
1. 일반적인 리눅스 이미지는 자동실행이 되지 않는다. 일반적으로 다른 도커 이미지의 베이스가 된다.
2. docker run centos 명령어로 실행하면 도커 허브에서 최신버전이 다운로드가 되고 실행종료된 컨테이너가 생성된다.
2-1 이 이미지는 실행되고 있지 않으므로 docker start id 로 먼저 실행중으로 변경해야 실제 작업이 가능하다.
2-1-1 그 후에 interaction 모드에 들어가려면 docker exec -it id 명령을 사용하면 된다.
2-2 아니면 처음 부터 docker run -it centos 를 사용하여 바로 interaction 모드에서 작업을 할 수 있다.
3. 새로운 이미지에는 java가 설치되어 있지 않으므로 centos에 붙어서 자바를 설치해야 한다.
3-1 centos는 yum을 사용하므로 yum install java-11 형식으로 간단히 자바를 설치 가능하다.
4. 간단하게 centos에서 실행되는 스프링부트 도커 이미지를 생성해 본다.
4-1 먼저 실행한 스프링부트 프로젝트가 필요하다. mvn package로 먼저 fat jar을 만들어 놓는다.
4-2 특정 폴더를 만들어 이 jar파일을 저장하고 Dockerfile을 하나 생성한다.
4-3 Dockerfile은 도커 이미지 생성을 위한 실행 명령을 적어놓은 스크립트인데 RUN 하나가 하나의 Layout을 만든다.
4-4 아래의 명령어는
4-4-1 centos 도커이미지를 기본으로 하여 먼저 java-11을 설치한다.
4-4-2 VOLUME /tmp는 이미지 루트에 tmp 폴더를 생성하는데 이것은 톰캣 실행을 위해 필수적이다.
4-4-3 jar파일은 myapp.jar로 이름을 편리하게 변경하고 루트에 복사를 한다.
4-4-4 RUN sh -c 'touch ~ ' 은 말그대로 myapp.jar을 최신파일로 변경하여 항상 이미지 생성에 포함시킨다.
4-4-5 마지막 줄은 java -Djava.security~ -jar /myapp.jar 와 동일하다.
FROM centos
RUN yum install -y java-11
VOLUME /tmp
ADD /spring-boot-web-0.0.1-SNAPSHOT.jar myapp.jar
RUN sh -c 'touch /myapp.jar'
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom","-jar","/myapp.jar"]
4-5 특정 폴더에 이 두개의 파일을 두고
4-5-1 아래의 명령을 실행하면 현재 폴더에서 spring-boot-docker tag을 가지는 도커 이미지가 생성된다.
docker build -t spring-boot-docker .
4-5-2 아래처럼 step으로 나누어 실행되고 종료 후 docker images 을 실행해 보면 이미지가 생성된 것을 알 수 있다.
4-5-3 위의 이미지를 실행하는 방법은 동일한데 아래처럼 사용할 포트를 매핑하고 실행하면 된다.
docker run -d -p 8080:8080 spring-boot-docker
'Side Technologies' 카테고리의 다른 글
Mongo : 개요 (0) | 2020.08.19 |
---|---|
Tools : 리눅스 단축키, 명령어들 (0) | 2020.08.19 |
Docker : 삭제 명령어들 등 자주 쓰는 것들 (0) | 2020.08.18 |
Docker : MySql, postgres 설정하기 (0) | 2020.08.17 |
Docker : RabbitMQ 포트 매핑 (0) | 2020.08.17 |
- Total
- Today
- Yesterday
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
- 스프링부트
- mapping
- 설정하기
- 로그인
- 매핑
- form
- hibernate
- 외부파일
- Many-To-Many
- Spring Security
- 설정
- Spring
- login
- spring boot
- Validation
- jsp
- one-to-one
- Angular
- RestTemplate
- Security
- 상속
- MYSQL
- one-to-many
- 하이버네이트
- 자바
- crud
- 스프링
- XML
- Rest
- WebMvc