728x90
Azure, Docker, K8S MSA
azure portal 무료(1년?) 등록
azure portal 이 링크에서 무료 등록
azure marketplace 에서 container registry 를 설치
container registry 만들기
access key 에서 사용자 이름, password 복사
프로젝트 생성
my-new-project 생성
사용 스택 : node.js, expressJS
express 설치
cd my-new-project
npm init
npm install express --save
nodemon 설치
cd my-new-project
npm install --save-dev nodemon
프로젝트 폴더 구조
package.json
{
"name": "my-new-project",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "node ./src/index.js",
"start:dev": "nodemon ./src/index.js" // nodemon 은 dev 환경에서만 운영 환경에서 수정한게 바로바로 적용되면 안된다.
},
"keywords": [],
"author": "",
"license": "MIT",
"dependencies": {
"express": "^4.18.2",
"mongodb": "^5.7.0"
},
"devDependencies": {
"nodemon": "^3.0.1"
}
}
./src/index.js
const express = require("express");
const fs = require("fs");
const app = express();
const port = 3000;
app.get("/video,(req,res) => {
const path = "../videos/1234.mp4";
fs.stat(path,(err,stats) => {
if(err) {
console.error("An Error occured")
res.sendStatus(500)
return;
}
res.writerHead(200, {
"Content-Length" : stat.size,
"Content-Type" : "video/mp4"
});
fs.createReadStream(path).pipe(res);
});
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
});
npm install
Dockerfile 생성
FROM node:18-alpine
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install --only=production
COPY ./src ./src
COPY ./videos ./videos
CMD npm start
프로젝트 이미지화
cd my-new-project
docker build -t video-streaming --file Dockerfile . // 마지막 . 이 제일 중요하다.
-t 이미지의 태그나 이름을 부여
--file 도커파일 이름을 지정
. 이 마침표는 build 명령어가 현재 디렉터리를 기준으로 실행하게끔 한다.
docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
video-streaming latest 4b7a4c66f2c6 42 hours ago 96.4MB
docker container 생성
생성한 프로젝트가 잘 되는지 테스트하기 위해 docker run 으로 컨테이너 생성 하고 log 확인
docker run -d -p 3000:3000 video-streaming
docker logs -f video-streaming
해당 url 로 접속 시 잘되는지 확인.
이미지 생성 완료 후 Azure Container registry에 push
자기가 생성한 registry에 docker login 을 해야 된다.
위에서 생성한 container registry 에서 access key 로 들어간다.
- registry 의 이름이다.
- container registry의 주소이다.(여기에 docker login)
- login 시 사용할 username
- login 시 사용할 password
docker login <2번> --username <3번> --password <4번>
이미지에 태그하기
docker tag video-streaming <2번>/video-streaming:latest
docker tag <existing-image> <registry-url>/<image-name>:<version>
- existing-image : 자신의 PC 에 생성한 docker image
- registry-url : 위 이미지의 2번
이미지를 레지스트리에 푸시
docker push <2번>/video-streaming:latest
직접 생성한 2번 주소가 아니라면 실패한다.
레지스트리에서 이미지 확인
첫 서비스 생성 후 레포지토리 등록 완료.
레포지토리에 있는 이미지 실행
기존에 로컬 PC 에 있던 이미지와 컨테이너 삭제를 한다.
삭제를 완료한다면 이번에는 run 명령어를 써서 레포지토리에 있는 이미지 container 를 생성 후 실행
docker run -d -p 3000:3000 <2번>/video-streaming:latest
docker run -d -p <host-port>:<container-port> <registry-url>/<image-name>:<version>
docker yaml
version: '3'
services:
video-streaming:
image: video-streaming
build:
context: ./my-new-project
dockerfile: Dockerfile
container_name: video-streaming
ports:
- "3000:80"
environment:
- PORT=80
restart: "no"
docker-compose.yml 실행
docker-compose up --build
728x90
'아키텍처 패턴 > 마이크로 서비스' 카테고리의 다른 글
3. Azure Storage 설정 (0) | 2023.08.15 |
---|---|
1. 마이크로 서비스 란? (0) | 2023.07.30 |
Comment