Cohe

Docker 본문

배포 배우기

Docker

코헤0121 2024. 8. 8. 15:45
728x90
  • Backend Dockerfile 만들기 위한 순서

backend-test-cicd-main.zip

  • 위의 것 가져오기~!

user1@myserver01:~/backend-test-cicd-main$ **docker run -it ubuntu:22.04**

root@2b4e5d5e3b5a:/# **apt-get update && apt-get install openjdk-17-jdk 
=> 도커에 자바가 설치되어 있지 않으니 자바를 설치해준다~!**
  • 빌드파일을 복사해야 한다 (배포할 파일이 필요하기 때문)
    • 빌드파일이 없어!! → 만드세용 (명령어 : sh ./gradlew build)
  • ssh가 필요하다 (다운받으시오)
root@2b4e5d5e3b5a:/# **apt-get install ssh -y** 
  • 복사해야 한다
    • 도커 이미지 내에서 배포파일을 넣고 실행시키기 위해서 복사한다 (이름은 app.jar)
root@2b4e5d5e3b5a:/# **scp user1@192.168.15.101:~/backend-test-cicd-main/build/libs/codepipeline-0.0.1-SNAPSHOT.jar ./app.jar**
  • 실행한다 java -jar app.jar
  • 나가서 Dockerfile을 만든다 (위치는 프로젝트 root에)
FROM ubuntu:22.04

# java 설치
RUN apt-get update && apt-get install -y openjdk-17-jdk

# 실행 작업 위치.. /app 디렉터리가 기본 작업 위치
WORKDIR /app
COPY ./build/libs/codepipeline-0.0.1-SNAPSHOT.jar ./app.jar   

# 도커 내부에서 외부로 전달할 포트번호
EXPOSE 5000

# 도커 이미지 실행시 구동할 명령어
CMD [ "java", "-jar", "app.jar" ]
  • 도커 실행
    • 이미 한 차례 실행을 했었더라면 빠르다 → 캐시로 저장되는 편~
    • big은.. 왕 큰 이미지
user1@myserver01:~/backend-test-cicd-main$ **docker build -t backend0808:big .**
  • 도커 실행 2
    • nat network 포트포워드 설정하기
    • -d 는 뭐였더라 못들음
    • -p 는 포트 번호 설정 host:docker내 포트번호
user1@myserver01:~/backend-test-cicd-main$ **docker run -d -p 5000:5000 backend0808:big**
f723a639ccb385acf329173adb4d0845d0881dc91c1b08b52a2e9c569a86c5b4
  • 도커 stop

user1@myserver01:~/backend-test-cicd-main$ docker container stop f723a639ccb3
  • 최적화하기!! (나는 요기부터 용량 부족해서 못해봄 ㅎㅎ)

FROM openjdk:17.0.2-jdk-slim

# FROM ubuntu:22.04

# java 설치
# RUN apt-get update && apt-get install -y openjdk-17-jdk

# 실행 작업 위치.. /app 디렉터리가 기본 작업 위치
WORKDIR /app
COPY ./build/libs/codepipeline-0.0.1-SNAPSHOT.jar ./app.jar   

# 도커 내부에서 외부로 전달할 포트번호
EXPOSE 5000

# 도커 이미지 실행시 구동할 명령어
CMD [ "java", "-jar", "app.jar" ]
  • 최적화하기 2

FROM amazoncorretto:17-alpine

# FROM ubuntu:22.04

# java 설치
# RUN apt-get update && apt-get install -y openjdk-17-jdk

# 실행 작업 위치.. /app 디렉터리가 기본 작업 위치
WORKDIR /app
COPY ./build/libs/codepipeline-0.0.1-SNAPSHOT.jar ./app.jar   

# 도커 내부에서 외부로 전달할 포트번호
EXPOSE 5000

# 도커 이미지 실행시 구동할 명령어
CMD [ "java", "-jar", "app.jar" ]

Docker 이미지 파일 지우기

  • 지금 너무 용량 차지가 많아..
  • 용량 확인
user1@myserver01:~/backend-test-cicd-main$ **df -h**
  • 도커 이미지 확인
user1@myserver01:~/backend-test-cicd-main$ **docker images**
  • 지우려고 함 → 실행 중이라고 뜨며 실패했다
user1@myserver01:~/backend-test-cicd-main$ **docker rmi backend-spring:latest**
Error response from daemon: No such image: backend-spring:latest
  • grep으로 찾기
user1@myserver01:~/backend-test-cicd-main$ **docker ps -a | grep backend-spring**
  • 이미지 파일 삭제 명령어는 아래와 같다 (나는 어제 안해봤어서 낭낭하다)
**docker rmi 이미지
docker rmi backend-spring:파일명**
  • 용량이 너무 적어 ㅜㅜㅠ → 확장 명령어임.
sudo lvextend -L +20G /dev/ubuntu-vg/ubuntu-lv
sudo e2fsck -f /dev/ubuntu-vg/ubuntu-lv
sudo resize2fs -f /dev/ubuntu-vg/ubuntu-lv
  • 용량 확인용
sudo lvdisplay
sudo fdisk -l

FE 제작하기

  • Dockerfile 만들기
# Start your image with a node base image
FROM node:18-alpine

# The /app directory should act as the main application directory
WORKDIR /app

# Copy the app package and package-lock.json file
COPY package*.json ./

# Copy local directories to the current local directory of our docker image (/app)
COPY ./src ./src
COPY ./public ./public

# Install node packages, install serve, build the app, and remove dependencies at the end
RUN npm ci \
    && npm install -g serve \
    && npm run build \
    && rm -fr node_modules

EXPOSE 3000

# Start the app using serve command
CMD [ "serve", "-s", "build" ]
  • 실행
docker build -t welcome-to-docker . 
docker run -d -p 8088:3000 welcome-to-docker 

Docker Compose

  • 이미 있는지 확인하는거 : docker compose
  • dockercompose라는 폴더를 만든다!! 그 안으로 들어간다
    • compose.yaml 파일을 만든당
  • httpd는 아파치 서버와 비슷한 느낌..이래
user1@myserver01:~/dockercompose$ **docker run --name testhttp -d -p 8000:80 httpd**
  • 실행 중인 컨테이너 중지 ⇒ docker container stop 컨테이너 아이디
  • compose.yaml 파일에서 작업
version: '1'

services: 
  composehttpd1:
    image: httpd
    ports:
      -8000:80
    restart: always
  • 실행
docker compose -f compose.yaml up
  • 멈춤
docker compose -f compose.yaml down

'배포 배우기' 카테고리의 다른 글

쿠버네티스 설치 방법  (0) 2024.08.13
Docker 2  (0) 2024.08.11
CI/CD 배포  (0) 2024.08.05
리눅스 쉘 명령어2  (0) 2024.07.30
리눅스의 쉘 스크립트  (0) 2024.07.29