백엔드 관련 강의 공부/도커와 CI환경
-
도커 컴포즈(Docker Compose)백엔드 관련 강의 공부/도커와 CI환경 2023. 12. 30. 22:11
docker compose 도커 컴포즈란 다중 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 도구이다. server.js const express = require("express"); const redis = require("redis"); // 레디스 클라이언트 생성 const client = redis.createClient({ host:"redis-server", // host는 docker.compose.yml 파일에 명시한 컨테이너 이름 port: 6379 }) const app = express(); // 새로고침을 할 때마다 숫자가 1씩 증가하는 프로그램 app.get('/', async (req, res) => { await client.connect; let number = awa..
-
어플리케이션 코드 수정 후 빌드 - Docker Volume백엔드 관련 강의 공부/도커와 CI환경 2023. 12. 30. 19:50
소스 코드 변경 이후에 다시 빌드를 한다면 이미지를 생성하는 docker build와 앱을 실행하는 docker run을 반복해야 한다. 이미지 생성부터 새롭게 해줘야하기 때문에 효율적이지 않은 방법이다. Dockerfile에서 COPY를 통해 진행하기 때문에 COPY를 하려면 이미지를 새로 만들어야 하기 때문이다. 어플리케이션 소스 수정 후 재빌딩 시 효율적인 방법 위의 사진을 보면 COPY가 2번 이루어진다. 첫 번째 COPY는 package.json을 받아와서 종속성 부분의 파일만 복사하고, 두 번째 COPY에서 전체를 복사한다. 이렇게 하면 소스만 변경할 때에는 package.json은 캐시를 사용해서 다시 다운받지 않고, 다른 소스코드 파일만 변경한다. 코드 변경 후 빌드를 해보면 package..
-
간단한 Node.js 앱을 이용한 도커 활용백엔드 관련 강의 공부/도커와 CI환경 2023. 12. 30. 18:16
이론으로만 공부한 도커를 실제로 적용시켜볼 것이다. 물론 아주 간단한 앱을 만들어서 적용해보는 것이다. 강의에서 Node.js를 통해 진행했기 때문에 따라 진행할 것이며 나중에 스프링으로 변환할 것이다. package.json { "name": "nodejs-docker-app", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js" }, "dependencies": { "express": "4.17.1" }, "author": "", "license": "ISC" } 간단하게 expr..
-
Dockerfile과 도커 이미지 만들기백엔드 관련 강의 공부/도커와 CI환경 2023. 12. 29. 21:10
도커 이미지는 컨테이너를 만들기 위해 필요한 설정이나 종속성들을 갖고있는 소프트웨어 패키지이다. 지금까지는 이미 있는 도커 이미지를 Dockerhub에서 가져와서 사용했지만 직접 이미지를 만들수도 있으며 직접 만든 이미지를 Dockerhub에 업로드 할 수도 있다. 도커 이미지 생성 순서 도커 파일 만들기 도커 파일(Docker file)이란? - 도커 이미지를 만들기 위한 설정 파일로 컨테이너가 어떻게 행동해야 하는지에 대한 설정들을 정의해 주는 파일 도커 파일을 만드는 순서 도커 파일은 도커 이미지를 만들기 위한 설정 파일이므로 도커 이미지가 필요한 것이 무엇인지 생각하는 것이 먼저이다. 도커 이미지는 시작시 실행 될 명령어와 파일 스냅샷이 필요했었다. 베이스 이미지를 명시 (파일 스냅샷에 해당) 추..
-
실행 중인 컨테이너에 명령어 전달 - exec 명령어백엔드 관련 강의 공부/도커와 CI환경 2023. 12. 29. 20:21
이전에는 실행을 할 때 명령어를 입력했지만 이미 실행중인 컨테이너에 명령어를 전달하는 명령어도 많이 쓰인다. docker exec 컨테이너를 하나 실행하고 ps를 이용해서 컨테이너 아이디를 알아온 다음에 docker exec 명령어를 입력하면 된다. docker run alpine ls와 출력이 같지만 docker exec는 실행중인 컨테이너에 명령어를 전달하는 것이기 때문에 많이 사용되는 명령어이다. -it 옵션 -it 명령어를 사용하기 위해 redis 이미지로 컨테이너를 만들었다. redis에 접속하는 명령어는 redis-cli인데, 컨테이너 외부의 클라이언트에서 접근하는 것이기 때문에 에러가 난다. 따라서 docker exec -it redis-cli를 입력해야한다. 여기서 -it interacti..
-
도커 컨테이너의 생명주기백엔드 관련 강의 공부/도커와 CI환경 2023. 12. 29. 20:09
도커 컨테이너의 생명주기 지금까지 사용한 docker run 로 컨테이너 생성을 진행했는데, 생성과 시작으로 나눌 수가 있다. 이후에 중지와 삭제를 하는 명령어도 있다. 생성 : docker create 시작 : docker start 중지 : docker stop 중지(2) : docker kill 삭제 : docker rm 1. 생성 : docker create docker create hello-world 명령어를 사용해서 컨테이너를 만들어줬다. 생성만 하고 시작은 안했기 때문에 시작 시 실행할 명령어가 컨테이너에 들어가지는 않았다. 2. 생성 : docker start 시작을 할 때에는 docker start -a 을 입력한다. 컨테이너 아이디/이름은 전부 다 입력해도 되지만 앞의 몇 글자만 입력..
-
컨테이너 나열 - ps 명령어백엔드 관련 강의 공부/도커와 CI환경 2023. 12. 29. 19:51
docker run 뒤에 추가 명령어를 입력할 수 있는데, 추가 명령어를 입력하면 원래 이미지가 가지고 있는 시작 명령어 대신 추가 명령어의 커맨드를 실행한다. docker run alpine ls를 입력하면 기본 명령어 대신 ls가 출력된다. 컨테이너들 나열하기 - docker ps docker run alpine ping localhost를 이용해서 계속해서 ping을 보내게 된다면 컨테이너가 계속 실행될 것이다. 이 때 ps를 입력하면 위에처럼 컨테이너의 정보가 나온다. 기본 정보들이 나오고 PORT는 지정하지 않았기 때문에 빈칸으로 나온다. 원하는 정보만 출력 원하는 정보만 출력하기 위해서는 --format 메서드를 이용하면 된다. 모든 컨테이너 나열 docker ps 뒤에 -a를 붙이면 된다. ..
-
이미지로 컨테이너 만들기백엔드 관련 강의 공부/도커와 CI환경 2023. 12. 29. 17:24
이미지로 컨테이너를 만드는 순서 1. Docker 클라이언트에 docker run 를 입력한다. 2. 도커 이미지에 있는 파일 스냅샷을 컨테이너 하드 디스크에 옮겨 준다. 3. 이미지에서 가지고 있는 명령어를 이용해서 프로세스를 실행시켜준다. 이전에 만들어놓은 hello-world라는 이미지로 컨테이너를 만드는 과정이다. 내부적으로 어떻게 작동하는지에 대한 사진이다. 이미지와 컨테이너가 존재한다. 이미지에는 시작시 실행될 명령어인 run hello-world와 파일 스냅샷이 있다. docker run hello-world를 입력하면 도커 이미지의 파일 스냅샷이 컨테이너의 하드디스크에 들어간다. 이후에 시작 시 실행할 명령어를 컨테이너에 넣어준다. 이후에 컨테이너가 실행될 때 실행 명령어가 호출되고, 커널..