【问题标题】:How to copy file to a container in docker如何将文件复制到docker中的容器
【发布时间】:2021-03-28 14:53:47
【问题描述】:

我有一个 docker-compose 和一个 docker 文件。

在 docker 文件中,我指定了 COPY 指令

问题是,我在与 dockerfile 相同的文件夹中有一个新的 JAR 文件,但它一直在复制旧的 jar。我不知道它在哪里得到旧罐子。我确保只有一个罐子。

复制./xxxx.jar /home/dev/xxxxd.jar

【问题讨论】:

  • 可以构建没有缓存的镜像吗 docker-compose build --no-cache
  • 我不使用任何构建指令
  • 当你有一个新的 jar 文件时,你将不得不构建一个新的 docker 镜像对吗?我在这里错过了什么吗?通过使用 docker 或 docker-compose。你需要建立一个新的形象
  • 没错,我找到了罪魁祸首。这些图像不是重建的,而是从以前的构建中获取的。如果我们可以强制重建图像或在删除容器时删除图像,我不会这样做

标签: docker docker-compose


【解决方案1】:

假设您的 Dockerfile 如下所示:

FROM openjdk:8
COPY ./xxxx.jar /home/dev/xxxxd.jar
CMD ["java", "-jar", "/home/dev/xxxxd.jar"]

您的项目有一些文件夹,例如

project/
    Dockerfile
    docker-compose.yml
    xxxx.jar
    old-xxxx.jar

你可以让你的docker-compose.yml看起来像这样:

version: "3.4"
services:
  project:
    build: .
    volumes:
      - ./:/home/dev

此行将在构建时将 jar 复制到映像中

COPY ./xxxx.jar /home/dev/xxxxd.jar

这个 docker-compose 卷部分将运行 docker 容器,类似于使用以下 docker run 命令。

docker run -v ./:/home/dev project 

这将在运行之前将您的项目文件夹挂载到/home/dev。 哪个应该有您最近的 jar,它与您的项目文件夹中的 jar 相同。

如果你发现一些不寻常的事情,你可以试试我在出现问题时所做的事情。

docker-compose up --build

如果一切都失败了:

docker-compose stop && docker-compose rm -sfv && docker-compose up

类似问题:

How do I mount a host directory as a volume in docker compose

Auto remove container with docker-compose.yml

【讨论】:

  • 感谢您的帮助,我已经解决了这个问题,它需要重建图像。
猜你喜欢
  • 2016-03-29
  • 2018-07-01
  • 2014-05-19
  • 1970-01-01
  • 2014-03-29
  • 2021-07-14
  • 2022-01-10
相关资源
最近更新 更多