Docker
[Docker] Docker, Jenkins를 이용한 프로젝트 실행
ozofweird
2020. 12. 11. 01:38
1. 사전에 필요한 내용
[참고] CICD - AWS EC2 Jenkins 설치
[참고] CICD - AWS EC2 Jenkins GitHub 설정
[참고] CICD - AWS EC2 Jenkins 프로젝트 War 배포
2. Docker, Jenkins를 이용한 프로젝트 실행
1) Jenkins 설정
Execute Shell에 도커 이미지를 생성하고 생성한 이미지를 실행하도록 설정한다.
docker build --build-arg WAR_FILE=build/libs/springproject-1.0.1-SNAPSHOT.war -t ozofweird/springproject:0.1 .
docker run --name springproject -d -p 8080:8080 ozofweird/springproject:0.1
2) Dockerfile 생성
프로젝트 내에 Dockerfile을 실행한다.
- openjdk:8-jdk-alpine 베이스 이미지로 사용
- ARG를 이용하여 WAR_FILE 변수값 설정
- COPY를 이용하여 호스트의 파일을 컨테이너로 복사
- ENTRYPOINT를 이용하여 컨테이너에서 명령 실행
Spring Boot는 내장 톰캣을 지원하기 때문에 톰캣을 독립적으로 사용하지 않고도 자바 명령어를 이용하여 실행할 수 있다. (Spring Boot를 구동시킬 컨테이너 내부에서 'java -jar -Dserver.port=8080 springproject.war' 명령 수행)
FROM openjdk:8-jdk-alpine
ARG WAR_FILE=springproject-1.0.1-SNAPSHOT.war
COPY ${WAR_FILE} springproject.war
ENTRYPOINT ["java","-jar","-Dserver.port=8080","springproject.war"]
'docker daemon permission denied' 에러가 발생할 경우 jenkins 사용자를 추가해준다.
sudo usermod -aG docker jenkins
Jenkins를 재시작하고도 오류가 재발생할 경우 1트
sudo usermod -aG root jenkins
Jenkins를 재시작하고도 오류가 재발생할 경우 2트
sudo setfacl -m u:jenkins:rwx /var/run/docker.sock
그 외에 실습을 하며 발생한 오류들은 2가지가 있다. 우선 하나는 8080 포트가 사용중일 경우 동작하지 않을 수 있다. 이를 해결하기 위해서 사용중인 8080 포트를 Kill 해주면 된다.
sudo fuser -k 8080/tcp
'docker: Error response from daemon' 오류의 경우, 가동중인 컨테이너를 찾고 지워주면 된다.
sudo docker ps -a
sudo docker rm [컨테이너ID]
[참고] bhsbhs235.github.io/
728x90