到目前為止,啟動container後,要對裡面的檔案做修改,目前是沒辦法的,如果在開發中,一存檔立刻重啟server,在docker底下要怎麼做?
Docker Volume可以幫忙做到,原理是啟動docker的時候告訴docker daemon有哪些資料夾直接參考local本機的資料夾,而不是原先已經copy到image裡面的檔案。
將原先的Dockerfile改名成Dockerfile.dev
修改CMD部分,檔案修改的時候可以重新啟動
FROM node:alpine
WORKDIR /usr/nestapp
COPY ./package.json ./
RUN npm install
COPY ./ ./
COPY src src
COPY test test
# 指定執行dev script
CMD ["npm", "run", "start:dev"]
在command line下,指定dockerfile
docker build -f dockerfile.dev .
啟動docker
docker run -v local資料夾:container裡對應的資料夾 image_id
或是在docker-compose.yml額外設定volumes參數
version: '3'
services:
redis-server: # redis server
image: 'redis'
nest-app: # nestjs app name
restart: always
build: #改為指定dockerfile
context: .
dockerfile: Dockerfile.dev
ports:
- '8080:3000'
volumes: # 設定資料夾reference
- /usr/nestapp/node_modules
- ./src:/usr/nestapp/src
- ./test:/usr/nestapp/test
執行docker-compose up
找不到src下main.ts檔案
利用docker exec -it 看nest-app container
container底下src確實沒有檔案
剛剛google一下,可能是跟本機是windows有關
明天再來解決。