도커: 인과 아웃

이 게시물은 docker를 시작하는 방법에 대한 내용을 보완하기 위한 것입니다. 우리는 조금 더 깊게 다이빙하고 docker가 우리를 위해 무엇을 준비하고 있는지 알아볼 것입니다. 일관성을 위해 처음부터 시작하겠습니다. Nodejs로 Docker를 설정하는 방법을 알고 있다면 주요 부분으로 이동할 수 있습니다skip.


잠수하자



의제



🎯 설정
🎯 인터랙티브 쉘
🎯 데이터 지속성(볼륨 및 nodemon 핫 리로드)
🎯 컨테이너와 로컬 머신 간의 데이터 공유

설정



NodeJs 서버를 설정하고 고정화할 수 있습니다.

index.js 파일에 다음 코드 줄을 작성합니다.

const express = require('express');
const app = express();

const port = process.env.PORT || 4545;

app.use(express.json());

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

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});



다음으로 Dockerfile를 추가하고 다음 줄을 추가합니다.



Docker 데스크톱 활성화

여기서 녹색 👆🏼은 활성을 의미합니다.


이제 이미지를 구축할 수 있습니다.

docker build -t node-devto .




빌드된 이미지 확인
docker image ls




빌드된 이미지에서 컨테이너를 실행해 보겠습니다.

실행: docker run -v $(pwd):/app -p4000:4545 -d --name node-api-devto node-devto





실행 중인 컨테이너를 테스트해 보겠습니다.




대화형 쉘

Let's open our running container in interactive shell mode
docker exec -it [container id or name] bash
docker exec -it 4b73a54c50e6 bash






컨테이너에 있는 폴더와 파일을 살펴보겠습니다.



다음을 사용하여 대화형 셸을 종료합니다. exit



컨테이너에 파일 생성

컨테이너에 파일을 만들 수 있으며 일반적으로 터미널과 상호 작용합니다.




데이터 지속성



예를 들어 클라이언트에 보내는 응답과 같이 익스프레스 서버에서 무언가를 변경하는 경우. 응답을 Hello World!에서 Hello Docker!로 변경해 보겠습니다. 코드를 업데이트하려면 실행 중인 컨테이너를 삭제하고 코드를 변경한 다음 이미지를 다시 빌드합니다.

그런 다음 빌드된 이미지에서 컨테이너를 실행합니다.


브라우저를 다시 새로 고치면 변경 사항이 표시됩니다.


위의 과정은 번거로울 수 있습니다. 작은 변경 사항이 있을 때마다 이미지를 다시 빌드하지 않기 위해 지속성 데이터를 가질 수 있는 볼륨을 사용합니다.[바인드/마운트] 이를 통해 로컬 파일 시스템[폴더]의 데이터를 컨테이너 파일 시스템과 동기화할 수 있습니다. [폴더]

먼저 nodemon를 개발 종속성으로 설치하여 변경 시 자동으로 서버를 다시 시작하도록 합시다.

🐋 nodemon 설치


🐋 dev 스크립트를 실행하도록 package.json을 편집합니다.


🐋 재구성 우리 Dockerfile

🐋 이미지를 재구성하자


🐋 다음으로 볼륨 및 바운드/마운트를 사용하여 빌드된 이미지에서 컨테이너를 실행합니다.


이제 서버 응답을 Hey, we made it로 변경하겠습니다. 코드 베이스 저장


브라우저를 새로 고칩니다.


이피, 작동합니다! 더 이상 변경 사항을 보고 싶을 때마다 다시 빌드할 필요가 없습니다.


컨테이너와 로컬 시스템 간의 데이터 공유



대화형 셸을 다시 열겠습니다.



컨테이너에서 파일을 만들 수 있으며 로컬 파일 시스템에 나타납니다.





결론

이 게시물이 도움이 되었기를 바랍니다. 더 유용한 docker 명령, 사용 방법docker-compose, 서비스 실행 및 해결 방법은 다음 게시물에서 확인하십시오.




참조

Docker

좋은 웹페이지 즐겨찾기