도커: 인과 아웃
10084 단어 javascriptdevopsdockerprogramming
잠수하자
의제
🎯 설정
🎯 인터랙티브 쉘
🎯 데이터 지속성(볼륨 및 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 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
Reference
이 문제에 관하여(도커: 인과 아웃), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/drsimplegraffiti/docker-ins-and-outs-40hb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)