API 명세서를 추가하고, CI/CD를 구축하여 AWS EC2에 배포하자.
implementation "io.springfox:springfox-boot-starter:3.0.0"
implementation "io.springfox:springfox-swagger-ui:3.0.0"
@Configuration
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.OAS_30)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
spring:
mvc:
pathmatch:
matching-strategy:ant_path_matcher
docker run 이미지명
docker ps
docker ps -l
docker stop 컨테이너 명, id
docker start 컨테이너 명
docker logs 컨테이너 이름
docker rm 컨테이너 명 -f
docker rmi 이미지 명
docker image prune
FROM gradle:7.4-jdk11-alpine as builder
WORKDIR /build
# 그래들 파일이 변경되었을 때만 새롭게 의존패키지 다운로드 받게함.
COPY build.gradle settings.gradle /build/
RUN gradle build -x test --parallel --continue > /dev/null 2>&1 || true
# 빌더 이미지에서 애플리케이션 빌드
COPY . /build
RUN gradle build -x test --parallel
# APP
FROM openjdk:11.0-slim
WORKDIR /app
# 빌더 이미지에서 jar 파일만 복사
COPY --from=builder /build/build/libs/*-SNAPSHOT.jar ./app.jar
EXPOSE 8080
# root 대신 nobody 권한으로 실행
USER nobody
ENTRYPOINT [ \
"java", \
"-jar", \
"-Djava.security.egd=file:/dev/./urandom", \
"-Dsun.net.inetaddr.ttl=0", \
"app.jar" \
]
pullContents=$(docker pull registry.gitlab.com/goodjav141592/finalproject_kimjisu_team7)
if echo $pullContents | grep "Image is up to date" ; then
echo 'Image already up to date'
exit 0
fi
echo "배포를 시작 합니다."
docker stop sns
docker rm sns
docker run -p 8080:8080 --name sns -d registry.gitlab.com/goodjav141592/finalproject_kimjisu_team7
docker image prune -f
crontab -e
crontab -l
crontab -r
* * * * 명령어
(분) *(시간) *(일) *(월) *(요일)
빌드와 배포를 자동화하는 것을 의미한다.
stages:
- dockerbuild-push
package:
only:
- main
image: docker:latest
stage: dockerbuild-push
services:
- docker:dind
before_script:
- docker login registry.gitlab.com -u $GITLAB_USER -p $GITLAB_PASSWORD
script:
- docker build -t registry.gitlab.com/$GITLAB_USER/$PROJECT_NAME .
- docker push registry.gitlab.com/$GITLAB_USER/$PROJECT_NAME