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

我应该如何进行?这可能吗?我应该修改 docker 镜像吗?如果是怎么办?或者我应该将 WSO2 安装在经典的 github 存储库中,修改xml那里并根据该存储库的内容重新创建 docker 映像?

4

2 回答 2

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
于 2016-08-02T11:49:12.127 回答
0

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

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

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

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

于 2016-11-09T17:41:11.797 回答