2016-08-02 50 views
3

我是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 

我想修改一些WSO2 configuration存储在某些xml文件,并将它推到生产。

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

回答

1

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

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

泊坞EXEC用于运行命令。 你可以用这个进入控制台,并运行多个命令:

docker exec -it a5866aee4e90 bash 
+0

你如何做文件夹共享的东西? –

+1

添加到YML文件这个配置 - 卷: -/C /用户/ richardkovachev /文件/工作区/ myskrill:/家庭/ MB/myskrill:RW 或者如果你泊坞窗命令运行它: 搬运工运行-it --rm = true --name my_name -v/c/Users/richardkovachev/Desktop:/ home/share – TreantBG

0

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

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

  1. 将配置文件从容器中复制到主机。 (这可以通过多种方式来实现:docker cp,简单的控制台窗口复制粘贴,体积共享)
  2. 修改配置文件与上位
  3. 修改后的文件复制回容器docker cp
  4. 上一个编辑器

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