相关疑难解决方法(0)

如何在映像更改后升级docker容器

假设我已经取消了正式的mysql:5.6.21图像.

我通过创建几个docker容器来部署此映像.

这些容器已运行一段时间,直到MySQL 5.6.22发布.mysql的官方形象:5.6使用新版本更新,但我的容器仍然运行5.6.21.

如何将图像中的更改(即升级MySQL发行版)传播到我现有的所有容器?Docker的正确方法是什么?

docker

481
推荐指数
9
解决办法
39万
查看次数

Docker COPY在重建容器时不更新文件

我有一个docker-compose-staging.yml文件,我用它来定义一个PHP应用程序.我已经定义了应用程序代码所在的数据卷容器(app),并使用volumes_from与其他容器共享.

泊坞窗 - 撰写-staging.yml:

version: '2'
services:
    nginx:
        build:
            context: ./
            dockerfile: docker/staging/nginx/Dockerfile
        ports:
            - 80:80
        links:
            - php
        volumes_from:
            - app

    php:
        build:
            context: ./
            dockerfile: docker/staging/php/Dockerfile
        expose:
            - 9000
        volumes_from:
            - app

    app:
        build:
            context: ./
            dockerfile: docker/staging/app/Dockerfile
        volumes:
            - /var/www/html
        entrypoint: /bin/bash
Run Code Online (Sandbox Code Playgroud)

此特定的docker-compose-staging.yml用于将应用程序部署到云提供程序(DigitalOcean),而app容器的Dockerfile具有COPY命令,该命令将文件夹从本地目录复制到配置中定义的卷.

泊坞窗/分期/应用/ Dockerfile:

FROM php:7.1-fpm
COPY ./public /var/www/html/public
COPY ./code /var/www/html/code
Run Code Online (Sandbox Code Playgroud)

这在我第一次构建和部署应用程序时有效.我的公共和代码目录中的代码在远程服务器上存在且正确.我使用以下命令进行部署:

docker-compose -f docker-compose-staging.yml up -d
Run Code Online (Sandbox Code Playgroud)

但是,接下来我尝试将文件添加到我的本地公共目录,然后运行以下命令来重建更新的代码:

docker-compose -f docker-compose-staging.yml build app
Run Code Online (Sandbox Code Playgroud)

此重建的输出表明COPY命令成功:

Building app
Step 1 : FROM php:7.1-fpm
 ---> 6ed35665f88f
Step 2 …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-compose

23
推荐指数
5
解决办法
2万
查看次数

标签 统计

docker ×2

docker-compose ×1

dockerfile ×1