如何在docker镜像中包含已修改的配置文件?

时间:2016-08-02 11:39:29

标签: git docker wso2 docker-image

我是Docker的新手。 devop同事在github存储库中创建了一个WSO2 docker镜像。他使用这些图像来创建临时和生产实例。

docker-compose.yml是:

#openssl req        -newkey rsa:2048 -nodes -keyout domain.key        -x509 -days 365 -out domain.crt

version: '2'

services:
  mysql:
    image: mysql:5.7.10
    ports:
      - "3306:3306"
    volumes:
      - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
    environment:
      - MYSQL_DATABASE=userdb
      - MYSQL_USER=dbwso2am
      - MYSQL_PASSWORD=dbwso2am
      - MYSQL_ROOT_PASSWORD=dbwso2am
  wso2am:
    image: salte/wso2am:1.9.1
    depends_on:
      - mysql
    volumes:
      - ./keys:/keys
    environment:
      - VIRTUAL_HOST=apimanager.qa.xxx.build
      - VIRTUAL_PORT=9443
      - VIRTUAL_PROTO=https
      - OFFSET=3
      - EXTERNAL_HOSTNAME=apimanager.qa.xxx.build
      - DATABASE_HOSTNAME=mysql
      - DATABASE_PORT=3306
      - DATABASE_USER=dbwso2am
      - DATABASE_PASSWORD=dbwso2am
      - PUBLIC_CERTIFICATE=/keys/domain.crt
      - PRIVATE_KEY=/keys/domain.key
      - PRIVATE_KEY_PASSWORD=wso2am
      - ADMIN_PASSWORD=admin

我想修改一些xml文件中存储的WSO2 configuration并将其推送到生产环境。

我该怎么办?这可能吗?我应该修改泊坞窗图像吗?如果有,怎么样?或者我应该在经典的github存储库中安装WSO2,修改那里的xml并根据此存储库的内容重新创建一个docker镜像?

2 个答案:

答案 0 :(得分:1)

您不需要为了更改一个xml而重新创建整个图像。 您可以通过卷或命令替换它。 例如,我已链接共享文件夹,您可以在容器上运行命令。 假设你在/ home / share中有Share文件夹,并且它链接到/ c / Share 因此,您将新的xml文件放在Share中,容器也可以看到它。 接下来运行此命令:

docker exec a5866aee4e90 cp -i /home/share/some.xml /home/the/path/you/chose

Docker exec用于运行命令。 您可以进入控制台并使用以下命令运行多个命令:

docker exec -it a5866aee4e90 bash

答案 1 :(得分:0)

docker cphttps://github.com/docker/docker/pull/6580

步骤(假设您需要修改现有的配置文件。如果没有,则从步骤2开始):

  1. 将配置文件从容器中复制到主机。 (这可以通过多种方式完成:docker cp,简单的控制台窗口复制粘贴,卷共享)
  2. 使用主机上的编辑器修改配置文件
  3. 使用docker cp
  4. 将修改后的文件复制回容器

    在诉诸此方法之前,请始终尝试通过环境变量应用修改。如果那是不可能的,那么你必须恢复编辑。