docker가 SpringBoot를 배포하고 jar 패키지를 교체하는 방법
프로젝트 디렉터리
dockerfile 파일
나중에 사용할 dockerfile 파일을 만듭니다.
파일 배포
서버에 새 /data/docker/hellolearn 폴더를 생성하고(파일 경로는 사용자 정의 가능), maven 패키지 jar 패키지와 위에서 생성한 dockerfile 파일을 서버의 새 폴더(/data /도커/hellolearn).
이미지 생성
docker build -t hellolearn .
docker build -t 이미지 이름: tag dockerfile의 상대 위치, 점은 현재 디렉터리를 나타내며, 태그가 없는 경우 기본값은 최신입니다. 쓴.
컨테이너 시작
docker run -d -p 8301:8301 --name hellolearn hellolearn
docker start hellolearn
-d 매개변수는 컨테이너가 백그라운드에서 실행되도록 하는 것입니다. 는 지정된 컨테이너의 이름이고, -p는 포트 매핑을 위한 것입니다. 이때 서버의 8301(콜론 뒤의 포트) 포트는 컨테이너(application.properties)의 8301(콜론 뒤의 포트)에 매핑됩니다. 8301)
Access the web
jar 패키지 매핑 배포
위 단계만 따르면 springboot의 docker 배포 전 과정을 쉽게 처리할 수 있습니다. 그러나 컨테이너를 시작한 후에는 jar 패키지를 업데이트해야 할 때마다 이미지를 다시 생성한 다음 컨테이너를 다시 생성해야 합니다. 이 과정은 매우 번거롭고 비효율적입니다. 그렇다면 이미지나 컨테이너를 업데이트하지 않고 배포를 완료하기 위해 jar 패키지를 직접 업데이트하는 방법은 무엇입니까?
5.1 dockerfile 업데이트
마지막 줄 entrypoint ["java","-jar","/data/learn-web-0.0.1-snapshot.jar"]
는 /data를 실행합니다. 컨테이너 디렉토리의 learn-web-0.0.1-snapshot.jar 파일입니다. entrypoint ["java","-jar","/data/learn-web-0.0.1-snapshot.jar"]
会运行容器里/data目录下的learn-web-0.0.1-snapshot.jar文件。
5.2 使用docker build命令构建镜像
docker build -t hellolearn .
5.3 创建&启动容器
docker run --name hellolearn -it -v /data/docker/newhellolearn/package:/data -d -p 8301:8301 hellolearn
-v 宿主机目录关联容器目录。这样宿主机的/data/docker/newhellolearn/package目录就与docker的/data目录进行映射。
这样的话,当jar包发生变动时,直接更新宿主机的/data/docker/newhellolearn/package目录下的jar包即可,更新jar包之后需要将容器重启一下。
脚本部署
通过jar包部署方式引起一个问题,若jar包名字发生变化,比如版本号变化(learn-web-0.0.1-snapshot.jar-->>learn-web-1.0.1-snapshot.jar)。需要怎么处理呢?下面就介绍第三种通过脚本部署的方式。
6.1 创建hellolearn.sh文件
java -jar /data/learn-web-0.0.1-snapshot.jar
将hellolearn.sh上传到/data/docker/hellolearn/scriptdeploy/package,这个文件夹路径可以自定义,记住这个文件夹路径,后面还会用到。
6.2 添加脚本执行权限
chmod +x hellolearn.sh
6.3 创建dockerfile
cmd ["sh","-c","/data/hellolearn.sh"]
docker build -t hellolearn .
5.3 컨테이너 생성 및 시작docker run --name hellolearn -it -v /data/docker/newhellolearn/ package:/data -d -p 8301:8301 hellolearn
-v 호스트 디렉터리는 컨테이너 디렉터리와 연결되어 있습니다. 이러한 방식으로 호스트의 /data/docker/newhellolearn/package 디렉터리가 docker의 /data 디렉터리에 매핑됩니다.
이 경우 jar 패키지가 변경되면 호스트의 /data/docker/newhellolearn/package 디렉터리에서 jar 패키지를 직접 업데이트할 수 있습니다. jar 패키지를 업데이트한 후 컨테이너를 다시 시작해야 합니다.
스크립트 배포jar 패키지 배포 방법으로 인해 버전 번호 변경(learn-web-0.0.1-snapshot.jar-) 등 jar 패키지 이름이 변경되는 경우 문제가 발생합니다. -> ;>learn-web-1.0.1-snapshot.jar). 무엇을 해야 합니까? 스크립트를 통한 세 번째 배포 방법은 다음과 같습니다.
6.1 hellolearn.sh 파일 생성
jar 패키지 배포 방법으로 인해 버전 번호 변경(learn-web-0.0.1-snapshot.jar-) 등 jar 패키지 이름이 변경되는 경우 문제가 발생합니다. -> ;>learn-web-1.0.1-snapshot.jar). 무엇을 해야 합니까? 스크립트를 통한 세 번째 배포 방법은 다음과 같습니다.
java -jar /data/learn-web-0.0.1-snapshot.jar
hellolearn.sh를 /data/docker/hellolearn/scriptdeploy/package에 업로드하세요. 이 파일은 폴더 경로는 사용자 정의할 수 있습니다. 이 폴더 경로는 나중에 사용되므로 기억해 두세요.
6.2 스크립트 실행 권한 추가
🎜🎜chmod +x hellolearn.sh🎜🎜🎜6.3 dockerfile 생성🎜🎜cmd ["sh","-c","/data/hellolearn.sh"]
는 컨테이너가 시작될 때 6.1에서 생성된 hellolearn.sh 스크립트를 시작한다는 의미입니다. 🎜🎜위에서 언급한 마지막 명령은 스크립트 배포에서 cmd로 변경된 진입점입니다. 진입점과 cmd의 구체적인 차이점에 관심이 있다면 자세히 알아볼 수 있습니다. 🎜🎜6.4 jar 패키지 업로드🎜🎜jar 패키지를 hellolearn.sh와 동일한 폴더 디렉터리, 즉 /data/docker/hellolearn/scriptdeploy/package에 넣습니다. 컨테이너를 생성할 때 이 디렉터리(호스트 디렉터리)를 다음과 결합합니다. 매핑을 위한 컨테이너의 /data 디렉터리입니다. . 🎜🎜6.5 파일 디렉터리 구조 다이어그램🎜🎜🎜🎜🎜여기서 디렉터리 구조에 대해 헷갈리실지 모르겠습니다. 한눈에 알아볼 수 있도록 호스트 컴퓨터의 디렉터리 구조 다이어그램을 업로드했습니다. 🎜🎜6.6 이미지 만들기🎜🎜🎜docker build -t hellolearn-script .🎜🎜🎜끝의 점은 현재 디렉터리를 나타내므로 이미지 생성 명령은 dockerfile이 있는 디렉터리에서 실행되어야 합니다. 🎜🎜6.7 컨테이너 생성 및 시작🎜🎜🎜docker run --name hellolearn-script -it -v /data/docker/hellolearn/scriptdeploy/package:/data -d -p 8302:8301 hellolearn-script🎜🎜docker start hellolearn -스크립트🎜
호스트의 /data/docker/hellolearn/scriptdeploy/package 디렉터리를 컨테이너의 /data 디렉터리 매핑과 연결합니다. 이 경우 jar 패키지가 변경되면 호스트 디렉터리의 jar 패키지를 직접 업데이트하면 됩니다. jar 패키지 이름이 변경되더라도 여전히 hellolearn.sh 스크립트를 업데이트해야 합니다. 업데이트 후 컨테이너를 다시 시작합니다.
6.8 웹 테스트 효과
Docker 로그 보기
docker 로그 [옵션] 컨테이너 ID
options 설명:
-f: 추적 로그 출력
--since: 특정 시작 시간 표시 All 로그
-t: 타임스탬프 표시
--tail: 최신 n개의 컨테이너 로그만 나열
7.1 지정된 시간 이후의 로그 보기, 마지막 100줄만 표시:
docker 로그 -f -t -- 이후= "2020-10-01" --tail=100 컨테이너 ID
7.2 지정된 기간의 로그 확인
docker 로그 -t --since="2020-10-01t19:00:00" -- "2020-10-01t19:00:00" 컨테이너 ID
7.3 지정된 시간 이후의 로그 보기:
docker 로그 -t --since="2020-10-01t19:00:00" 컨테이너 ID
7.4 지난 5분 동안의 로그 보기:
docker 로그 --since 5m 컨테이너 ID
7.5 exec 명령을 통해 지정된 컨테이너에서 bash를 실행합니다.
docker exec hellolearn -it /bin / bash
또는 docker exec -it hellolearn bash
docker exec hellolearn -it /bin/bash
或者 docker exec -it hellolearn bash
7.6 查看docker ip
docker inspect --format='{{.networksettings.ipaddress}}' hellolearn
遇到的问题
问题描述:error response from daemon: driver failed programming external connectivity on endpoint flamboyant_leavitt (iptables failed: iptables --wait -t nat -a docker -p tcp -d 0/0 --dport 8301 -j dnat --to-destination 172.17.0.2:8301 ! -i docker0: iptables: no chain/target/match by that name.
解决方案:重启docker。 systemctl restart docker
문제 발생🎜🎜문제 설명: 데몬의 오류 응답: 드라이버가 엔드포인트 flamboyant_leavitt에서 외부 연결 프로그래밍에 실패했습니다(iptables 실패: iptables --wait -t nat -a docker -p tcp -d 0/ 0 --dport 8301 -j dnat --to-destination 172.17.0.2:8301 ! -i docker0: iptables: 해당 이름으로 체인/대상/일치가 없습니다.🎜🎜해결책: docker를 다시 시작하세요. systemctl restart docker
🎜
위 내용은 docker가 SpringBoot를 배포하고 jar 패키지를 교체하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











국내 거울 소스로 전환 할 수 있습니다. 단계는 다음과 같습니다. 1. 구성 파일 /etc/docker/daemon.json 편집 및 미러 소스 주소를 추가하십시오. 2. 저장 및 종료 후 Docker Service Sudo SystemCTL Docker를 다시 시작하여 이미지 다운로드 속도 및 안정성을 향상시킵니다.

Docker Desktop을 사용하는 방법? Docker Desktop은 로컬 머신에서 Docker 컨테이너를 실행하는 도구입니다. 사용 단계는 다음과 같습니다. 1. Docker Desktop 설치; 2. Docker Desktop을 시작하십시오. 3. Docker 이미지를 만듭니다 (Dockerfile 사용); 4. Docker Image 빌드 (Docker 빌드 사용); 5. 도커 컨테이너를 실행하십시오 (Docker Run 사용).

Docker 이미지 생성 단계 : 빌드 지침이 포함 된 Dockerfile을 작성하십시오. Docker 빌드 명령을 사용하여 터미널에 이미지를 빌드하십시오. Docker 태그 명령을 사용하여 이미지를 태그하고 이름과 태그를 지정하십시오.

Docker LNMP 컨테이너 호출 단계 : 컨테이너 실행 : Docker Run -D-- 이름 LNMP -Container -P 80:80 -P 443 : 443 LNMP -Stack 컨테이너 IP를 얻으려면 Docker LNMP -Container | grep iPaddress 액세스 웹 사이트 : http : // & lt; 컨테이너 ip & gt;/index.phpssh 액세스 : docker exec -it lnmp -container bash access mysql : mysql -u roo

Docker 명령을 실행하는 방법? Docker를 설치하고 데몬을 시작하십시오. 공통 docker 명령 : 디스플레이 이미지 Docker PS : 디스플레이 컨테이너 Docker Run : 컨테이너 컨테이너 Docker 정지 : 컨테이너 중지 Docker RM : Docker exec : Docker Exec : Docker Exec : 실행 명령 Docker Logs 첨부 : Display Log Docker Commit : DICKER STOP DOCKER DACON : Sudo SystemCTL Docker 로그 : Sudo SystemCTL STOP DOCKER COMMIN

Docker 버전을 얻으려면 다음 단계를 수행 할 수 있습니다. Docker 명령 "Docker -version"을 실행하여 클라이언트 및 서버 버전을 볼 수 있습니다. Mac 또는 Windows의 경우 Docker Desktop GUI의 버전 탭 또는 Aff Docker Desktop 메뉴를 통해 버전 정보를 볼 수도 있습니다.

Docker에 이미지를 저장하려면 Docker Commit 명령을 사용하여 지정된 컨테이너의 현재 상태가 포함 된 새 이미지를 만들 수 있습니다. 구문 : Docker Commit [옵션] 컨테이너 ID 이미지 이름. 이미지를 저장소에 저장하려면 Docker Push 명령 인 Syntax : Docker 푸시 이미지 이름 [: tag]을 사용할 수 있습니다. 저장된 이미지를 가져 오려면 Docker Pull 명령 인 Syntax : Docker Pull Image Name [: Tag]을 사용할 수 있습니다.

Docker 이미지를 업데이트하는 단계는 다음과 같습니다. 최신 이미지 태그 가져 오기 새 이미지 특정 태그의 이전 이미지 삭제 (선택 사항) 컨테이너를 다시 시작하십시오 (필요한 경우)
