[英]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 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.