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

Git 如何在docker映像中包含修改的配置文件?,git,docker,wso2,docker-image,Git,Docker,Wso2,Docker Image,我是新来的码头工人。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

我是新来的码头工人。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,并将其推送到生产环境中


我应该如何进行?这可能吗?我应该修改docker图像吗?如果是,怎么做?或者我应该在一个经典的github存储库中安装WSO2,在那里修改
xml
,然后基于此存储库的内容重新创建docker映像吗?

您不需要重新创建整个映像来更改一个xml。 您可以通过卷或命令替换它。 例如,我链接了共享文件夹,您可以在容器上运行命令。 假设您在/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

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

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

  • 在使用此方法之前,请始终尝试通过环境变量应用修改。如果不可能的话,然后你必须恢复到编辑状态。

    如何实现文件夹共享?将以下配置添加到yml文件中:volumes:-/c/Users/richardkovachev/Documents/workspace/myskrill:/home/mb/myskrill:rw或者如果你使用docker命令运行它:docker run-it--rm=true--name my_name-v/c/Users/richardkovachev/Desktop:/home/share