SpringBoot 및 Mysql 응용 Docker 패키지 배치
Docker 설치
docker desktop for windows 를 직접 설치 하면 됩 니 다.docker copose 도 포함 되 어 있 습 니 다.
docker-compose version
를 통 해 결 과 를 검증 할 수 있 습 니 다.보통 다음 과 같은 정 보 를 출력 합 니 다.docker-compose version 1.25.4, build 8d51620a
docker-py version: 4.1.0
CPython version: 3.7.4
OpenSSL version: OpenSSL 1.1.1c 28 May 2019
docker image 관련 명령:
docker images
로 컬 모든 미 러 보기docker rmi XXX
이름 을 정 한 미 러 삭제docker ps -a
전체 용기 표시docker ps
현재 실행 중인 용기 보이 기docker start mysql
이전 이름 이 mysql 인 용 기 를 다시 시작 합 니 다docker stop mysql
msyql 용기 정지다 중 모듈 응용 에 대해 수 동 으로 model 을 만 들 때 경 로 를 비 공정 루트 디 렉 터 리 에 배치 할 수 있 습 니 다.예 를 들 어
test
라 는 module 을 만 들 때 수 동 으로 경 로 를 수정 하면D:\dev2\project\backends\docker\test
이 때 디 렉 터 리 등급 docker 를 추가 하여 같은 디 렉 터 리 에 nginx,my sql 등 디 렉 터 리 를 추가 하여 통일 적 으로 관리 하고 docker 화 개 조 를 실현 합 니 다.현재 부모 프로젝트 가 backends 이면 모듈 생 성 이 완료 되면 pom.xml 파일 예제 는 다음 과 같 습 니 다.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>backendsartifactId>
<groupId>pers.techlmmgroupId>
<version>1.0-SNAPSHOTversion>
<relativePath>../../pom.xmlrelativePath>
parent>
<modelVersion>4.0.0modelVersion>
<artifactId>dockercompartifactId>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-jpaartifactId>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
이 프로그램 은 jpa 를 기반 으로 자동 으로 ddl 문 구 를 만 듭 니 다.이 기능 은 방문 값 ip 에 따라 방문 횟수 를 계산 하 는 것 입 니 다.
@RestController
@RequestMapping("/api/v")
public class VisitorController {
@Autowired
private VisitorRepository repository;
@RequestMapping("/")
public String index(HttpServletRequest request) {
String ip = request.getRemoteAddr();
Visitor visitor = repository.findByIp(ip);
if (visitor == null) {
visitor = Visitor.builder().ip(ip).times(1L).build();
} else {
// +1
visitor.setTimes(visitor.getTimes() + 1);
}
repository.save(visitor);
return "ip " + ip + "access times:" + visitor.getTimes();
}
}
최종 적 으로
curl http://localhost:8080/api/v/
또는 브 라 우 저 방식 으로 방문 하면 다음 과 같은 결 과 를 얻 을 수 있 습 니 다.ip 0:0:0:0:0:0:0:1access times:7
TestRestTemplate 를 통 해 검증 도 가능 하 다.@SpringBootTest(webEnvironment = WebEnvironment.DEFINED_PORT)
@Slf4j
public class VisitorControllerTest {
@Autowired
TestRestTemplate restTemplate;
//
URI uri = UriComponentsBuilder.fromUriString("/api/v/").build().toUri();
@Test
void indexTest() {
String response = restTemplate.getForObject(uri, String.class);
log.info(response);
}
}
docker 프로필 만 들 기
docker 환경 에 배 치 된 후에 데이터베이스 링크 모델 이 변화 하기 때문에
application-docker.properties
파일 을 추가 해 야 합 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.# docker , docker , mysql-test docker run --link
spring.datasource.url=jdbc:mysql://mysql-test:3306/test
spring.datasource.username=root
spring.datasource.password=goodpine
로 컬 패키지 및 실행
현재 로 컬 포장 모드 를 시도 합 니 다.pom.xml 파일 경로(예 를 들 어 D:\dev2\\procject\backends\\dockercomp\\app>)에서 실행
mvn clean package -Dmaven.test.skip
을 통 해 포장 을 완성 할 수 있 습 니 다.포장 한 실행 가능 한 jar 는 target 디 렉 터 리 에 놓 습 니 다.예 를 들 어app\target\dockercomp-1.0-SNAPSHOT.jar
명령 행 에서 직접 실행java -jar dockercomp-1.0-SNAPSHOT.jar
하면 이 서 비 스 를 시작 할 수 있다.Dockerfile 파일 만 들 기
pom.xml 파일 과 디 렉 터 리 에 이름 을
Dockerfile
파일 로 추가 합 니 다.FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
# -Dspring.profiles.active=docker, docker
ENTRYPOINT ["java","-Dspring.profiles.active=docker","-jar","/app.jar"]
위 파일 은 target 에 있 는 모든 jar 를 app.jar 에 복사 하고 실행 시 profile 을 docker 에 대응 하 는 설정 을 만 드 는 것 을 의미 합 니 다.
Docker 배치
mysql docker 서비스 시작
docker run --name mysql-test -e MYSQL_ROOT_PASSWORD=goodpine -e MYSQL_DATABASE=test -p 3306:3306 -d mysql
시작 완료 후
docker ps
를 통 해 용기 운행 상황 을 볼 수 있 습 니 다.visitor-docker 미 러 구축
spring 프로젝트 루트 디 렉 터 리 에서 실행
docker build . -t visitor-docker
,그 중-t xxx
은 미 러 에 라벨 을 붙 이 는 것 을 말 합 니 다.이 명령 은 일반적으로 다음 과 같은 결 과 를 얻 습 니 다.E:\dev\2try\backends\dockercomp\app>docker build . -t visitor-docker
Sending build context to Docker daemon 39.79MB
Step 1/5 : FROM openjdk:8-jdk-alpine
---> a3562aa0b991
Step 2/5 : ARG JAR_FILE=target/*.jar
---> Using cache
---> 25bff168a2b2
Step 3/5 : COPY ${
JAR_FILE} app.jar
---> bac68174227c
Step 4/5 : EXPOSE 8080
---> Running in 904bc1180df7
Removing intermediate container 904bc1180df7
---> 1f234b6dbf72
Step 5/5 : ENTRYPOINT ["java","-Dspring.profiles.active=docker","-jar","/app.jar"]
---> Running in 0a2a351a3225
Removing intermediate container 0a2a351a3225
---> 2ee38fd2463a
Successfully built 2ee38fd2463a
Successfully tagged visitor-docker:latest
미 러 구축 이 완료 되면
docker images
을 통 해 현재 이 컴퓨터 의 모든 미 러 를 볼 수 있 습 니 다.PS C:\Users\123> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
visitor-docker latest 156aa35a495c 46 seconds ago 145MB
mysql latest 30f937e841c8 4 weeks ago 541MB
redis latest f9b990972689 7 weeks ago 104MB
mongo latest 3f3daf863757 8 weeks ago 388MB
nginx latest 602e111c06b6 8 weeks ago 127MB
hello-world latest bf756fb1ae65 5 months ago 13.3kB
openjdk 8-jdk-alpine a3562aa0b991 13 months ago 105MB
sath89/oracle-12c latest ee3351d51185 22 months ago 5.7GB
docker 응용 프로그램 실행
마지막 으로 아래 명령 을 통 해 응용 프로그램 을 실행 하면 됩 니 다.
docker run --link mysql-test:mysql-test --name visitorapp -p 8080:8080 visitor-docker
특별 설명:**이 링크 를 추가 하 십시오.그렇지 않 으 면 지정 한 데이터베이스 에 연결 할 수 없습니다.**링크 X:Y 에서 X 는 실행 중인 미 러 이름 을 말 합 니 다.위 에서 시작 하 는 my sql 데이터베이스 서비스의 별명 입 니 다.Y 설정 파일 에 인 용 된 데이터베이스 미 러 별명
여기에 mysql 기반 의 springboot 응용 docker 배치 가 완료 되 었 습 니 다.시험 과정 에서 많은 구덩이 에 부 딪 혔 습 니 다.예 를 들 어–link 등 이 도움 이 되 기 를 바 랍 니 다.
참고 자료
mvn idea:module
를 통 해 한 번 실행 한 다음maven
창 을 통 해 모든 module 를 새로 고침 하면 아이디어 에서 각 moduledocker rm XXX
삭제 한 다음docker rmi visitor-docker
을 통 해 해당 하 는 미 러 를 삭제 할 수 있다.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.