禁用Docker撰写的缓存

时间:2017-12-21 13:51:28

标签: docker caching docker-compose dockerfile

我遇到了Dockerfile看起来像这样的情况:

var dbObject = {
    "_id" : ObjectId("5a3b8cc68884dd1140a9a5b8"),
    "title" : "Sort Test",
    "user_id" : ObjectId("59e08e45f081170f582e95cc"),
    "status" : "active",
    "slides" : [ 
        {
            "_id" : ObjectId("5a3b8cc68884dd1140a9a5b9"),
            "sort_order" : 0,
            "content" : "Sort Test",
            "title" : "Sort Test"
        }, 
        {
            "_id" : ObjectId("5a3b8cda8884dd1140a9a5ba"),
            "sort_order" : 1,
            "content" : "Text Contents here...",
            "title" : "A1"
        }, 
        {
            "_id" : ObjectId("5a3b8ce48884dd1140a9a5bb"),
            "sort_order" : 2,
            "content" : "Text Contents here...",
            "title" : "A2"
        }, 
        {
            "_id" : ObjectId("5a3b8cec8884dd1140a9a5bc"),
            "sort_order" : 3,
            "content" : "Text Contents here...",
            "title" : "A3"
        },
        {
            "_id" : ObjectId("5a3b8cec8884dd1140455bc"),
            "sort_order" : 4,
            "content" : "Text Contents here...",
            "title" : "A4"
        }
    ],
    "description" : "Sort Test",
    "__v" : 0
}

var slides = dbObject.slides;

var switchElementsInArray = function(array, sortOrder1, sortOrder2) {
    var newArray = [];
    for(var element of array) {
        if(element.sort_order === sortOrder1) {
            newArray.push(elem2);
        } else if(element.sort_order === sortOrder2) {
            newArray.push(elem1);
        } else {
            newArray.push(element);
        }
    }

    return newArray;
}


var newSlides = switchElementsInArray(slides, 2, 3);

基本上每当我使用此Dockerfile启动容器时,Docker都会创建新映像。因为这个FROM image with fully-configured server (without application) COPY war created locally by IntelliJ inside server in Docker image 文件经常变化(这是在这里使用Docker的全部目的 - 为了在开发过程中轻松部署.war图像),我使用了很多未使用此应用程序旧版本的图像。这会导致磁盘空间问题,我必须手动修剪所有已弃用的图像。

有没有办法禁用 Docker缓存?我使用的是一组通过docker-compose文件连接的服务器,所以它可能会以某种方式管理这些图像,以便在不再需要时自动删除它们?

.war具有docker build参数,但它只会使每个图层的缓存无效(每个命令始终执行,但仍保存在图像/图层存储库中)。此外--no-cache对我不起作用。

1 个答案:

答案 0 :(得分:0)

Docker documentation所述,如果每个docker构建文件发生更改,将忽略缓存,因为校验和文件更改,可能您必须从Dockerfile中删除COPY命令并使用VOLUME和在每个docker run上复制war文件,以确保每次启动时战争都会改变