[Docker] Dockerize Project

DAUN JO·2021년 7월 2일
1

TIL

목록 보기
5/17

Docker 개발 환경

1. 도커 설치

https://docs.docker.com/get-docker/

2. 도커 버전 확인

docker -v

3. 테스트용 도커 컨테이너 실행

docker run hello-world

테스트 성공


Docker 명령어

1. 컨테이너 조회하기

docker ps -a

2. 컨테이너 삭제

docker rm [컨테이너 ID]

3. 도커 이미지 보기

docker images

4. 도커 이미지 삭제

docker rmi [이미지 ID]


Jenkins 활용

1. Jenkins 실행

docker run --name myjenkins -d -p 9080:8080 jenkins/jenkins
docker ps

2. bash 실행

docker exec -it myjenkins bash
cat /etc/issue

3. Admin PW 확인

cat /var/jenkins_home/secrets/initialAdminPassword
exit

=> 위 명령어를 한번에
docker exec myjenkins cat /var/jenkins_home/secrets/initialAdminPassword

4. http://localhost:9080 접속 후 Admin PW 입력

5. Install Suggested Plugins 선택 후 계정 만들기

6. myjenkins 컨테이너 재시작

docker restart myjenkins

7. docker 상태 확인 후 테스트 컨테이너(myjenkins) 삭제



Front 도커 이미지 저장

1. Git 연동

git clone [repo 주소]
cd [pjt name]
dir

2. 로컬에서 front-end 실행

cd [폴더명]
npm install
npm serve

3. Dockerfile 작성

https://kdeon.tistory.com/6

FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./

RUN npm install
COPY . .
RUN npm run build


FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

4. 도커 이미지 빌드

docker build -t vue-app .

5. 도커 실행 및 웹브라우저 접속

docker run -it -p 80:80 --rm --name vue-app-1 vue-app
rm은 컨테이너가 정지되면 자동으로 삭제되는 옵션 (임시 테스트용)

6. Front 확인 완료


ctrl+C로 종료


Backend 도커 이미지 저장

1. Backend 실행

`cd [폴더명]`
`mvnw package`

2. Dockerfile 작성

https://spring.io/guides/gs/spring-boot-docker/ 참고

FROM openjdk:8-jdk-alpine
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

3. Spring Project build

gradle bootjar
build/libs 경로에 가보면 모든 의존성 라이브러리가 포함된 jar 파일을 확인 할 수 있다.

4. 도커 이미지 build, run

docker build -t springio/gs-spring-boot-docker .
docker run -p 8080:8080 springio/gs-spring-boot-docker

5. Backend 실행 확인 완료




개발용 DB (MySQL) 실행

1. MySQL 컨테이너 실행

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=<pw> -e MYSQL_DATABASE=<name> -d mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

포트 에러 발생

docker: Error response from daemon: Ports are not available: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.

사용중인 포트 확인
netstat -ano | findstr 3306

포트 죽이기
taskkill /f /pid PID

2. 실행완료

3. 접속 테스트




참고 자료

Spring build : https://gusrb.tistory.com/71
Spring Dockerfile : https://spring.io/guides/gs/spring-boot-docker/
Vue Dockerfile : https://kdeon.tistory.com/6
DB: https://poiemaweb.com/docker-mysql

profile
🍕

0개의 댓글