[ 항해99] 73일차 & 74일차 docker 다커 독커 닥커 뿌시기
항해 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
회사를 고르는기준 ?
무슨 질문을 해야하나?
를 하자 였는데 지금 이미다 까먹음...
'IT > Bootcamp 항해99' 카테고리의 다른 글
[항해99] 76일차 & 77일차 아키텍쳐 , aws (3) | 2021.08.23 |
---|---|
[항해99] 75일차 함께하는 동료를 의심하자. (8) | 2021.08.21 |
[항해99] 71일차 & 72일차 독커? 닥커! docker! 다커야 멍충이들아 (4) | 2021.08.16 |
[항해99] 69일 & 70일차 (8) | 2021.08.15 |
[항해99] 68일차 늙은 쥬니어 개발자는 슬퍼 (5) | 2021.08.14 |