繁体   English   中英

如何将文件复制到 docker 中的容器

[英]How to copy file to a container in docker

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

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

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

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

因此,假设您的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 运行命令。

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

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

如果你注意到一些不寻常的事情,你可以试试我在 go 错误时所做的事情。

docker-compose up --build

如果一切都失败了:

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

类似问题:

如何在 docker 组合中将主机目录挂载为卷

使用 docker-compose.yml 自动删除容器

Docker 可能正在使用缓存层。 这就是文件不改变的原因。 尝试重建图像:

docker-compose build --no-cache

或者,为了一起构建和运行:

docker-compose up --build

此外,对于那些想要从容器复制文件或将文件复制到容器以执行一次性任务(例如测试)的人,您可以使用:

docker cp host_source_path container:destination_path

或者

docker cp container:source_path host_destination_path

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM