Docker는 Springboot 프로젝트를 빌드하고 테스트를 릴리스합니다.

SpringBoot 프로젝트를 Docker 이미지로 패키징하는 데는 두 가지 옵션이 있습니다.

완전 자동화 : 먼저 도커 이미지 웨어하우스를 구축한 다음 프로젝트의 Maven 구성에서 웨어하우스 주소를 구성하고 프로젝트에 Dockerfile 파일을 구성하여 아이디어에 직접 패키징하고 이미지 웨어하우스에 자동으로 업로드한 다음 서버로 이동하세요. 미러를 시작하세요.

반자동화 : 반자동화에는 두 가지 옵션이 있는데, 하나는 Dockerfile 파일을 프로젝트 내부에 배치하는 것이고, 다른 하나는 프로젝트 외부에 배치하는 것입니다.

프로젝트 내부에 배치: springboot pom에서 maven 플러그인 지원 구성
이 jar를 서버에 업로드하고, 서버에 Dockerfile을 생성하고, docker build 명령을 실행하고, 이 jar를 docker 이미지로 빌드한 다음, 다음을 통해 실행합니다. 영상.

일반적으로 반자동화는 완전 자동화보다 더 많이 사용됩니다. 이 기사에서는 반자동화의 두 번째 방법을 사용합니다. 일반적으로 말하면 몇 가지 단계가 있습니다.

docoer 파일을 생성합니다:

(1) 프로젝트에 Dockerfile이라는 새 파일을 만듭니다.

Dockerfile 작성:

#基础镜像
FROM openjdk:8-jre

#发布到网上时只会把jar包和Dockerfile发布上去
# 把当前目录下的jar包拷贝进docker镜像里
COPY *.jar /ftdocker.jar

#CMD命令用于指定这个容器启动的时候要运行的命令(CMD一行只执行一个命令,可以写多个CMD)
#地址映射
CMD ["--server.port=8088"]

#对外暴露端口
EXPOSE 8088

# ENTRYPOINT命令用于指定这个容器启动的时候要运行的命令(可以追加命令)
#执行命令
ENTRYPOINT ["java", "-Xmx512m", "-jar", "/ftdocker.jar"]

Java 프로젝트를 저장하기 위해 프로젝트를 저장하려는 서버에 새 폴더를 만듭니다.

패키지된 jar 패키지와 Dockerfile 파일을 서버에 업로드합니다.

Dockerfile을 사용하여 Docker 이미지 패키징

  1. #选项及解释

  2. -t的t是tag,表示生成的镜像的名称和版本号

  3. .表示当前构建时上下文的路径为当前目录

  4. docker build -t todocker:0.1 .

표현:

(FROM java:8)을 지정하면 Jenkins가 서비스를 빌드하고 Dockerfile에서 오류를 보고합니다. java:8-jre에 대한 매니페스트를 찾을 수 없음: 매니페스트 알 수 없음: 매니페스트 알 수 없음

1. 문제 설명:
Jenkins 빌드 서비스, 콘솔 보고 오류:

manifest for java:8-jre not found: manifest unknown: manifest unknown

1. 스크린샷:


2. 문제 해결
Docker가 공식적으로 java8 이미지를 포기했기 때문입니다.jdk1.8을 사용하려면 openjdk를 사용하면 됩니다.
해결책은 Dockerfile을 FROM openjdk:8-jre로 변경하는 것입니다.

FROM openjdk:8-jre

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone

ARG JAR_FILE
COPY ${JAR_FILE} /app.jar

ENTRYPOINT ["java", "-Xmx512m", "-Djava.security.egd=file:/dev/./urandom", "-Ddruid.mysql.usePingMethod=false", "-jar", "/app.jar"]
CMD ["--spring.profiles.active=prod"]

다음 명령을 사용하여 이미지가 성공적으로 빌드되었는지 확인합니다.

docker images

표현: 

새로운 도커 이미지를 사용하여 도커 컨테이너를 시작하려면 다음 명령을 사용하십시오.

#옵션 및 설명
-d는 컨테이너가 백그라운드에서 실행 중임을 나타냅니다.
-P는 임의로 지정된 포트를 나타내거나 -p 지정된 포트를 나타냅니다.
--name="name" 매개변수는 컨테이너
 
docker 실행을 구별하기 위해 컨테이너에 이름을 지정하는 데 사용됩니다. d -p 8012:8012 --name 컨테이너 이름 이미지 이름: 버전

표현:

Docker 컨테이너 내부의 프로젝트에 액세스

(1) docker 컨테이너 내 SpringBoot 프로젝트의 8080 포트를 매핑하기 위해 -P 파라미터로 docker 포트를 임의로 지정하기 때문에 docker에서 어떤 포트를 임의로 지정했는지 알 수 없으므로 다음 명령어를 사용하여 어떤 포트가 지정되었는지 확인하세요. 무작위로 지정된 도커 포트는 (도커 컨테이너 시작 시 포트를 지정하면 이 단계를 수행할 필요가 없습니다)

도커 ps
렌더링: 

(2) 컬 명령어를 사용하여 docker 컨테이너에 있는 SpringBoot 프로젝트에 접근하고, 404라는 단어가 나타나면 SpringBoot 프로젝트가 성공적으로 시작되었음을 의미합니다.

컬 로컬호스트: 도커
렌더링  에 의해 무작위로 지정된 포트

(3) 컬 명령을 사용하여 SpringBoot 프로젝트의 인터페이스를 호출하고 호출이 성공할 수 있는지 확인합니다.

컬 로컬호스트: docker 에 의해 무작위로 지정된 포트/인터페이스 경로 . 렌더링

다른 문제:

이 오류는 컨테이너가 이미 존재하는 경우 발생하며, 다음 명령을 사용하여 컨테이너를 중지, 삭제하고 최종적으로 시작할 수 있습니다.

docker stop name/image_id
docker rm name/image_id

태그로 이미지 삭제

미러링은 다음 중 하나를 통해 삭제할 수 있습니다.

docker rmi [image]

또는:

docker image rm [image]

강제 삭제:

docker rmi -f image_id

컨테이너 작업 명령 요약: 참조 링크

컨테이너 중지:
docker stop hello1
중지된 컨테이너 시작:
docker start hello1
컨테이너 입력:
docker exec -it hello1 /bin/bash
컨테이너 삭제:
docker rm -f hello1
도움말 명령:
docker --help

참조 링크: 링크 1 , 링크 2

Supongo que te gusta

Origin blog.csdn.net/chenthe1/article/details/132621107
Recomendado
Clasificación