我正在RHEL 7.3 64位VM上内部运行docker 17.03.0-ce。我提取了一个weblogic 10.3.6 RHEL映像,然后修改了weblogic域配置文件,该文件是通过在docker运行期间使用命令“ VM_IP = $(hostname -i)”传递VM的IP来运行我的应用程序所需的。因此,我在docker文件中添加了sed命令以及服务器启动脚本,该脚本将config文件中的占位符替换为VM IP。但是,当服务器启动时,配置文件似乎恢复为原始状态,即未替换占位符值。我观察到,如果我注释服务器启动脚本,则占位符将被替换为正确的。我尝试从作为入口点的shell脚本执行sed,还尝试从dockerfile运行sed命令。
下面是我的docker文件
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView.estimatedRowHeight = 600;
self.tableView.rowHeight = UITableViewAutomaticDimension;
sectionTitleList = [NSMutableArray<NSString*> new];
for (NSString* sectionTitle in yourSectionResponseArray) {
[sectionTitleList addObject: sectionTitle];
}
modelList = [[NSMutableArray alloc] initWithCapacity: [sectionTitleList count]];
//your row title array has to be 2D array.
for(int i = 0; i < [sectionTitleList count]; i++) {
NSMutableArray* rowStringArray = [NSMutableArray new];
for(NSString* rowTitle in [your2DRowResponseArray objectAtIndex:i]) {
[rowStringArray addObject: rowTitle];
}
[modelList insertObject: rowStringArray];
}
}
下面是replace.sh shell脚本
FROM 192.168.1.1:5000/wcp_image:v6
WORKDIR /
USER root
ENV VM_IP=$vm_ip
RUN rm -rf
/data/Oracle/Middleware/user_projects/domains/WCP_DOMAIN/config/config.xml
COPY config.xml
/data/Oracle/Middleware/user_projects/domains/WCP_DOMAIN/config/
RUN chmod 777
/data/Oracle/Middleware/user_projects/domains/WCP_DOMAIN/config/config.xml &&
chown -R wcpuser.wcpuser
/data/Oracle/Middleware/user_projects/domains/WCP_DOMAIN/config/config.xml
COPY replace.sh /data/docker_setup
RUN chmod 777 /data/docker_setup/replace.sh
ENTRYPOINT ["/data/docker_setup/replace.sh"]
CMD ["$VM_IP"]
请让我知道。预先感谢。
更新
下面是容器中的startWeblogic.sh脚本
#!/bin/bash
cd /data/Oracle/Middleware/user_projects/domains/WCP_DOMAIN/config
sed -i -r "s/VM_IP/$VM_IP/g"
/data/Oracle/Middleware/user_projects/domains/WCP_DOMAIN/config/config.xml
/data/Oracle/Middleware/user_projects/domains/WCP_DOMAIN/bin/startWebLogic.sh