[ 항해99] 73일차 & 74일차 docker 다커 독커 닥커 뿌시기

IT/Bootcamp 항해99|2021. 8. 19. 10:42

항해 99

73일차 :

74일차:

자 오늘도 묻고 따블로가보자...

미안해요 상현님 오늘만봐줘요....

이게 먼 개소리야 ?


뒤에서 15%아니지?   top 15% 지?  

링크드인에서 회사에 지원했는데 시험? 보라고해서 보다가 너무어려워서 그냥 공부용으로 스크린샷찍어놔야겠다

하고 걍 대충풀엇는데 15프로나옴. 내밑에있는애들 은 너넨 뭐냐!  멍청이들이냐 진짜

 

 

docker.기본 

이미지 다운로드 , 컨테이서 실행 ,삭제 는 하곘는데 ?

인제 이걸 어떻게 쓰냐고 ? 

 

docker pull node 
docker run -i -t node bash 
// node bash 
// -ti option will make interactive 

docker run --rm -it node bash 
// when you exit it will automatically deleted

 

막힐때는 무조건 마지막에 찾아가는곳 : pluralsight

 

https://app.pluralsight.com/course-player?clipId=ef7606c8-7ddb-4d5b-be47-2a0278e2c24f 

 

Developing Node.js Apps with Docker | Pluralsight

 

app.pluralsight.com

Docker :

increaser portability 

consistent environment 

applications isolated from one another 

resource isolation

easier testing 

running multiple versions side by side 

CI/CD systems support

 

Also there are  Podman , Kubernates   : These are all same mfers 

 

 


저번포스팅은  docker로 간단하게 img 설치 , contatiner 실행 , 삭제 등을 햇으니 

이번에는 내 프로젝트를 img로만들어서 나중에 실행할수있도록 해보는게 목표.

 

 

1.  이미지 만들기 

 

예시로 node -exprss를 만들어서 이것을 image로만든뒤 docker로 돌려보겠다!

 

docker node :

 

1. node  express 로 기본  예제 서버를만들기 

일단 새로운 folder에다가  

npm init -y 
npm install express

나는 app.js가좋아서 이름 app.js로 만들고   port 8080으로 만듬.

//app.js

const express = require('express')
const app = express()
const port = 8080

app.get('/', (req, res) => {
    res.send('Hello Skyler!')
})

app.listen(port, () => {
    console.log(`Example app listening at http://localhost:${port}`)
})

그럼 여기서 또 package.json가서   script  start 지정해놓고.

 "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start" : "node app.js"
  },

2.  docker file 를만들면된다.

//Dockerfile

FROM node:16
MAINTAINER Skyler <minsu.bang@connect.qut.edu.au>
WORKDIR /usr/src/app
COPY package*.json ./

RUN npm install
COPY . .
EXPOSE 8080
CMD [ "node", "app.js" ]

From node

16은 노드 어떤버젼으로 만들껀지 정해주는것

Maintainer

누가 만들었는지 쓰는건데 별로 안중요

Workdir /user/src/app 

설정한 실행파일 이 실행될 디렉터리 지정 

COPY package*.json ./

RUN npm install

COPY . .

이렇게 세트로 해주자. 

EXPOSE 8080

포드 지정해주자

CMD ["node","app.js"]

CMD로 앱실행하는거 명령어

 

자 인제 이걸가지고 docker 이미지를만들껀데

docker build --tag skyler/test:node .

// node .까먹지말어
docker images 
// image확인

docker run -p 8080:8080 skyler/test:node 
//이미지로 컨테이너 실행

이렇게해서 만들어주고  localhost:8080들어가면 접속가능!!

 

3.  docker hub에 push하기

pm2 이용을위해 docker file 에 추가해주자

FROM node:16
MAINTAINER Skyler <minsu.bang@connect.qut.edu.au>
WORKDIR /usr/src/app
COPY package*.json ./

RUN npm install
RUN npm install -g pm2
COPY . .
EXPOSE 8080
CMD ["pm2-runtime","start", "./bin/www"]

 

그럼 이걸로 다시  image만들기

docker build --tag skyler:node .

그리고 docker login해서

docker hub에다가 만든 이미지를 push를하자.

sudo docker login
docker push skyler:node

 

 뭔데이거? 왜 denied뜨냐 

찾아보니깐 뭐 docker hub repository에 이름이랑 뭐랑 막 틀려서 안돼고 머가 머어쩌구 저쩌구 라는데.....

제일 쉬운방법은 

아예 이미지를 처음부터 docker id /repository name으로 지정해주고 

//docke build --tag {docker id}/{repository}:node .
docker build --tag bang618/aws:node .

docker hub 가서  repository에서 똑같이 aws로 만들어주고

 

docker push bang618/aws:node

그럼 docker hub에서 추가된것을 볼수있지.

4.   AWS 에 배포하기

 

 

아래 밑에있는것들을 다쳐야지 docker가 install된다고 다른 블로그에서 본것같은데...

난그냥 docker install했는데 됐다.

curl -fsSL https://get.docker.com/ | sudo sh
sudo usermod -aG docker $USER

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# check (re-login)
docker version
docker-compose version

# reboot
sudo reboot

 

어쩃든 docker를 깔앗으면 ,

sudo docker login 
// login 

sudo docker pull bang618/aws:node 
sudo docker run -t -i -p 8080:8080 bang618/aws:node 
//하면 오류가난다

오류가 나는데 이게  CMD ["pm2-runtime","start","www"]

추가한데서난다.  www를 못찾으니깐 나는건데 그럼 우리는 app.js니깐

 

그래서 dockerfile에서 이렇게 바꿔주고 

FROM node:16
MAINTAINER Skyler <minsu.bang@connect.qut.edu.au>
WORKDIR /usr/src/app
COPY package*.json ./

RUN npm install
RUN npm install -g pm2
COPY . .
EXPOSE 8080
CMD ["pm2-runtime","start", "app.js"]

다시 dockr hub올려주고 다시 다운받아서 실행!!!

//local에서 다시 빌드
docker build --tag bang618/aws2:node .
docker push bang618/aws2:node
//aws2라는 repository새로 자동으로 만들어짐



// aws에서는 밑에꺼

sudo docker run -t -i -p 8080:8080 bang618/aws2:node

자 그럼 ...인제 모해야대지 

나 이쉬운거가지고 왜 자꾸해맷지 ? 

 

 

 

 

docker compose ?

volume ? 

 

https://www.youtube.com/watch?v=gAkwW2tuIqE 

 

 

lol i like this video 

you can learn the differences of virtual machine and docker 

  

https://www.youtube.com/watch?v=eGz9DS-aIeY 

 

linode 

서버 

 

 

 

협렵사 발표 :

a

회사를 고르는기준 ? 

무슨 질문을 해야하나?

를 하자 였는데 지금 이미다 까먹음... 

반응형

댓글()