본문 바로가기

DevOps

(45)
[Docker 실습] 백엔드 프로젝트(Nest.js)를 Docker로 실행시키기 Nest.js 프로젝트 Docker로 실행시키기1. Nest.js 설치npm i -g @nestjs/cli*node 먼저 실행해야 한다.  2. Nest 프로젝트 생성nest new my-server=> npm 선택하면 된다. 3. 생성한 my-server로 들어가보자.  4. 편집기에서 오픈 5. 프로젝트안에 Dockerfile 생성 6. Dockerfile 작성해보자. FROM nodeWORKDIR /appCOPY . .RUN npm install RUN npm run buildEXPOSE 3000ENTRYPOINT [ "node", "dist/main.js" ]=> 1) app 디렉터리에 생성      2) 전체파일 복사      3) 컨테이너에 npm 설치 및 빌드      4) 포트 문서화   ..
[Docker 기본] EXPOSE: 컨테이너 내부에서 사용 중인 포트를 문서화하기 EXPOSE: 컨테이너 내부에서 사용 중인 포트를 문서화하기EXPOSE는 컨테이너 내부에서 사용중인 포트를 문서화 하는 역할을 한다. 이전 포스팅에서 포트매핑을 했었다. 해당 이미지가 포트에서 실행 중인지 아닌 지 사용자들은 모를 수 있기 때문에 이를 명시해주는 역할을 한다. 문서화하는 역할만 할 뿐 실제 작동방식과는 상관 없다.  사용법EXPOSE [포트 번호]  * Inflearn(인프런) ‘비전공자도 이해할 수 있는 Docker 입문/실전’ 강의 참고
[Docker 기본] WORKDIR: 작업 디렉토리를 지정 WORKDIR : 작업 디렉토리를 지정WORKDIR로 작업 디렉터리를 전환하면 그 이후에 등장하는 명령문은 해당 디렉터리를 기준으로 실행된다. 작업 디렉터리를 지정하는 이유는 컨테이너 내부의 폴더를 깔끔하게 관리하기 위해서이다. 추후 관리를 위해서 디렉터리를 생성하는 것이 좋다. 사용법WORKDIR [작업 디렉터리로 사용할 절대 경로] 예제1. 폴더 생성 mkdir docker-workdir 2. 폴더에 Dockerfile 및 여러 개의 파일 생성 3. 빌드 docker build -t my-server . 4. 컨테이너 띄우기docker run -d my-server 5. 컨테이너에 들어가서 파일을 조회해보자.docker exec -it 2bf bashls=> 복사한 파일이 생성된 것을 확인할 수 있다..
[Docker 기본] RUN: 이미지를 생성하는 과정에서 사용할 명령문 실행 RUN이미지 생성 과정에서 명령어를 실행시켜야 할 때 사용 RUN [명령문]이 때 명령문은 리눅스 명령어  RUN이랑 ENTRYPOINT랑 뭐가 다를까?RUN은 이미지 생성과정에서 필요한 명령어를 실행시킬 때 사용하고,ENTRYPOINT는 생성된 이미지를 기반으로 컨테이너를 생성한 직후에 명령어를 실행시킬 때 사용한다. 예제미니 컴퓨터 환경이 ubuntu로 구성되어있고, git이 설치된 이미지를 만들어보자. 1. RUN 명령어를 통해 git 설치FROM ubuntu;RUN apt update && apt install -y gitENTRYPOINT [ "/bin/bash", "-c", "sleep 500" ] 2. 빌드docker build -t my-server . 3. 실행docker run -d m..
[Docker 실습] 백엔드 프로젝트(Spring boot) Docker로 실행시키기 Spring boot 프로젝트 Docker로 실행시키기1. start.spring.io 접속   2. 인텔리제이로 프로젝트를 열어보자. 3. 컨트롤러를 생성 작동하는지 확인해보자.4. 이미지 생성을 위해 도커 파일을 만든다. 프로젝트 => 우클릭 => New file => Dockerfile이란 이름으로 파일생성 5. 베이스 이미지는 jdk 17버전으로 셋팅copy를 통해 빌드한 jar파일을 컨테이너로 복사하고, 컨테이너 안에서 실행  1) 빌드   인텔리제이 터미널에  ./gradlew clean build 입력해서 빌드   build/lib 경로에 jar파일이 생성됐는지 확인해보자.2) 도커파일 작성FROM openjdk:17-jdkCOPY build/libs/*SNAPSHOP.jar app.jarE..
[Docker 기본] ENTRYPOINT: 컨테이너가 시작할 때 실행되는 명령어 ENTRYPOINT컨테이너가 생성되고 최초로 실행될 때 수행되는 명령어.미니 컴퓨터의 전원을 키고나서 실행시키고 싶은 명령어를 적으면 된다.  사용법ENTRYPOINT [명령문..]  예제ENTRYPOINT [명령문..] 1. hello를 출력하는 명령문 작성FROM ubuntuENTRYPOINT [ "/bin/bash", "-c", "echo hello" ] 2. 빌드, 실행docker build -t my-server .docker run -d my-server 3. sleep을 주지 않았으므로 중단된 컨테이너를 조회해보자.docker ps -a 4. 로그 조회 docker logs fc8  * Inflearn(인프런) ‘비전공자도 이해할 수 있는 Docker 입문/실전’ 강의 참고
[Docker 기본] COPY: 파일 복사(이동) COPY: 파일 복사(이동)COPY는 호스트 컴퓨터에 있는 파일을 복사해서 컨테이너로 전달하는 기능이다.  사용법copy [호스트 컴퓨터에 있는 복사할 파일의 경로] [컨테이너에서 파일이 위치할 경로] 1. app.txt 파일을 만든다.2. Dockerfile에는 다음과 같이 입력하자.FROM ubuntuCOPY app.txt /app.txtENTRYPOINT [ "/bin/bash", "-c", "sleep 500" ] => 앞의 app.txt 는 호스트 컴퓨터의 상대경로 / 뒤에 app.txt는 절대경로  3. 빌드docker build -t my-server . 4. 실행docker run -d my-server 5. 파일이 생성됐는지 확인docker exec -it 914 bash 6. 파일 내용..
[Docker 기본] 종료된 컨테이너에 들어가서 디버깅하고 싶을 때 종료된 컨테이너에 들어가서 디버깅하고 싶을 때ENTRYPOINT ["/bin/bash", "-c", "sleep 500"] => 500초 동안 시스템을 일시정지 시키는 명령어  * Inflearn(인프런) ‘비전공자도 이해할 수 있는 Docker 입문/실전’ 강의 참고