如何将修改后的configuration文件包含在Docker镜像中?

我是Docker的新手。 devop同事在github仓库中创build了一个WSO2 docker镜像。 他使用这样的图像来创build舞台和生产实例。

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并将其推送到生产环境。

我应该如何继续? 这可能吗? 我应该修改泊坞窗图像吗? 如果是的话如何? 还是应该将WSO2安装在经典的github存储库中,在那里修改xml并根据这个存储库的内容重新创build一个docker镜像?

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

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

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

 docker exec -it a5866aee4e90 bash 

docker cp : https : //github.com/docker/docker/pull/6580

步骤(假设你需要修改一个已经存在的configuration文件,如果没有,则从步骤2开始):

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

在采取这一措施之前,请始终尝试通过环境variables应用修改。 如果这是不可能的,那么你必须恢复编辑。

Interesting Posts