要求:當新版本的J2EE應用程序投入生產時,因爲開發環境和生產不是同樣,DBA必須替換war包中的一些配置文件,那些需要替換的文件通常包含一些敏感數據(如數據庫賬號,密碼)。如何僅替換文件不相同,而不是整個目錄當使用數據卷容器作爲其他容器的共享存儲時
我認爲創建一個數據卷容器是一個好主意,它包含那些特定於生產的配置文件。在這種情況下,配置文件可以是(應用程序)」容器之間共享
讓說,我有和J2EE應用程序與搬運工人使用Tomcat 8運行時,dockerfile如下:
FROM tomcat:8
WORKDIR $CATALINA_HOME
RUN midair -p /etc/foo
RUN touch /etc/foo/a
RUN touch /etc/foo/b
RUN touch /etc/foo/c
RUN touch /etc/foo/d
RUN echo "a" >> /etc/foo/a
RUN echo "b" >> /etc/foo/b
RUN echo "c" >> /etc/foo/c
RUN echo "d" >> /etc/foo/d
CMD ["catalina.sh", "run"]
DBA必須更換文件b和C的應用程序之前投入生產,因此,我們有一個dockerfile如下:
FROM centos:6.8
RUN mkdir -p /etc/foo
RUN touch /etc/foo/a
RUN touch /etc/foo/d
RUN echo "sub a" >> /etc/foo/a
RUN echo "sub d" >> /etc/foo/d
COPY ./run.sh /root
RUN chmod 755 /root/run.sh
CMD ["/root/run.sh"]
要測試數據量容器是否會滿足我的要求,運行下面的命令:
docker create -v /etc/foo --name configstore centos:6.8 /bin/bash
docker run -d --volumes-from configstore --name testsubcontainer tomcat:8
最後我發現「tomcat」容器在/etc/foo
b中有「a」和「d」,c已經不存在了。
問題1:如何將僅使用數據卷容器作爲其他容器的共享存儲時的文件全部替換爲不同的文件。
Q2:有沒有其他更好的解決方案,以滿足我的要求