【问题标题】:Docker container not updating on code changeDocker 容器未在代码更改时更新
【发布时间】:2020-06-04 11:48:46
【问题描述】:

我有一个 Dockerfile 来构建我的节点容器,它看起来如下:

FROM node:12.14.0

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 4500

CMD ["npm", "start"]

基于这个 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"

预期行为:每次我在本地计算机上对项目进行新更改时,我都希望重新启动 docker-compose 以便反映新更改。

当前行为:要使新更改反映在 docker-compose 上,我必须执行 docker-compose down 然后删除图像。我猜它必须重建图像。我如何做到这一点,以便每当我进行更改时,dockerfile 都会构建一个新图像?

我了解需要使用卷。我只是不明白怎么做。有人可以在这里帮助我吗?码头工人

【问题讨论】:

    标签: docker docker-compose dockerfile


    【解决方案1】:

    当您进行更改时,您需要运行docker-compose up --build。这将重建您的映像并根据需要重新启动容器。

    Docker 没有检测代码更改的工具,并且它不打算用作实时重新加载环境。卷不是用来保存代码的,人们在尝试它时会遇到一些问题(Docker 文件同步可能很慢或不一致;将node_modules 树放入匿名卷中会主动忽略对package.json 的更改;它会移植对 Kubernetes 等集群环境尤其不利)。您可以使用指向 Docker MongoDB 的主机节点进行日常开发,并且仍然使用此基于 Docker 的设置进行部署。

    【讨论】:

      【解决方案2】:

      为了让您“重新启动”您的 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"
      

      volumes标签很简单的一句话:“嘿,把容器外的当前文件夹(点)映射到容器内的工作目录”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-25
        • 1970-01-01
        • 2019-09-11
        • 2019-12-19
        • 2020-03-20
        • 2021-12-17
        • 2017-01-29
        • 2021-06-14
        相关资源
        最近更新 更多