Sar*_*tra 6 docker dockerfile docker-compose
我有一个 Dockerfile 来构建我的节点容器,它如下所示:
FROM node:12.14.0
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 4500
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)
基于此 docker 文件,我使用 docker compose 运行此容器并将其链接到 mongo 容器,以便它引用 mongo-service。docker-compose.yml 如下所示
version: '3'
services:
backend:
container_name: docker-node-mongo-container
restart: always
build: .
ports:
- '4700:4500'
links:
- mongo-service
mongo-service:
container_name: mongo-container
image: mongo
ports:
- "27017:27017"
Run Code Online (Sandbox Code Playgroud)
预期行为:每次我在本地计算机上对项目进行新更改时,我都希望 docker-compose 重新启动,以便反映新更改。
当前行为:为了使新更改反映在 docker-compose 上,我必须执行 docker-compose down 然后删除图像。我猜它必须重建图像。我如何做到这一点,以便每当我进行更改时,dockerfile 都会构建一个新映像?
我知道需要使用卷。我只是不明白如何。有人可以帮我吗?码头工人
当您进行更改时,您需要运行docker-compose up --build
. 这将重建您的映像并根据需要重新启动容器。
Docker 没有检测代码更改的功能,并且它不打算用作实时重新加载环境。卷不是用来保存代码的,人们在尝试它时会遇到一些问题(Docker 文件同步可能很慢或不一致;将node_modules
树放入匿名卷中会主动忽略对 的更改package.json
;它对集群环境的移植特别糟糕,例如Kubernetes)。您可以使用指向 Docker MongoDB 的主机节点进行日常开发,并且仍然使用这种基于 Docker 的设置进行部署。
小智 8
为了让您“重新启动”您的 docker 应用程序,您需要使用 docker 卷。
添加到您的 docker-compose.yml 文件中,如下所示:
version: '3'
services:
backend:
container_name: docker-node-mongo-container
restart: always
build: .
ports:
- '4700:4500'
links:
- mongo-service
volumes:
- .:/usr/src/app
mongo-service:
container_name: mongo-container
image: mongo
ports:
- "27017:27017"
Run Code Online (Sandbox Code Playgroud)
Volumes 标签很简单:“嘿,将容器外部的当前文件夹(点)映射到容器内部的工作目录”。
归档时间: |
|
查看次数: |
3124 次 |
最近记录: |