【问题标题】:Copy files to the tomcat webapps folder in Docker container using Docker-compose使用 Docker-compose 将文件复制到 Docker 容器中的 tomcat webapps 文件夹
【发布时间】:2018-04-01 01:52:11
【问题描述】:

我有一个场景,比如我必须将几个配置文件复制到存在于 docker 容器内的 tomcat webapps 文件夹中。这是我使用的 dockerfile

FROM tomcat:7.0.82-jre8
RUN apt-get update && apt-get -y upgrade
WORKDIR /usr/local/tomcat
COPY /app.war /usr/local/tomcat/webapps/app.war
RUN apt-get update && apt-get install -y dos2unix
EXPOSE 8080
COPY tomcat-users.xml /usr/local/tomcat/conf/

一旦我们运行 docker,它实际上会执行以下操作

  1. 它实际上将 app.war 复制到 tomcat webapps 文件夹并解压到名为“app”的文件夹中
  2. Docker 将尝试启动 tomcat 服务器。

我想将我的配置文件复制到 tomcat webapps 文件夹中提取的 war 文件中。这是该物业的位置 tomcat_home/webapps/app/conf/services.properties 在启动tomcat服务器之前

在启动 tomcat 容器之前,我很难将此属性文件复制到相应的文件夹中。

我不确定如何使用 docker-compose 来做到这一点。这在 docker-compose.yml 或使用 dockerfile 中是否真的可行?任何答案都将是可观的。

【问题讨论】:

    标签: tomcat docker docker-compose dockerfile


    【解决方案1】:

    是的,这是可能的。您可以在docker-compose.yaml 文件的服务部分中使用volume:,也可以在docker file 中指定copy 命令。 语法copy source destination 在 docker 文件中。或者
    volumes: <folder/path/in/host> : <folder/path/in/container> 在 docker-compose 中

    【讨论】:

    • 据我所知,Volume 可用于在父主机和 docker 容器之间挂载文件或文件夹。在我的情况下,我想在启动 tomcat 服务器之前将几个配置文件复制到 docker 容器内的一个文件夹中。但如果我运行如下命令,docker 也会自动启动 tomcat 服务器。 $ docker-compose up -d --build
    • 使用 docker-file 和 docker-compose 文件。如上所述,在 docker 文件中添加您的复制命令。然后运行docker-compose.yaml文件。所以在运行你的容器之前,可以在创建镜像的时候进行配置
    • 我已经在使用 docker-compose 和 dockerfile ..using 卷什么时候挂载文件? docker容器启动后?因为在提取war文件之前,容器中的文件夹路径不存在。当战争文件被提取?它只会在tomcat启动时提取。
    • 运行前可以加逗号解压
    • 那将是个好主意。但我对此还有一个问题。我已经在使用 CMD 运行 sh 文件以在启动后保持 docker 容器处于活动状态。根据 docker 文档,我们不能在 dockerfile 或 docker-compose.yml 中使用多个 CMD
    【解决方案2】:

    你不能使用 docker-compose.yml 复制文件,但是你可以使用 Dockerfile 中的 COPY 命令将文件放入容器中, 也许您对路径 /app/conf/services.properties 不是目录感到困惑,这就是为什么没有发生复制并且 Docker 没有抛出错误的原因 另一种方法是你可以挂载一个卷,这可以使用 docker-compose.yml 来完成

    【讨论】:

    • 我认为您没有正确理解我的情况。实际上我知道我们可以将文件复制到 Docker 容器中。对我来说,我必须将属性文件复制到容器启动时将从war文件中提取的文件夹中。在这种情况下,它将是 tomcat_home/webapps/app/conf/
    • 您可以尝试在CMD 中放置一个脚本作为入口点来复制配置文件docs.docker.com/engine/reference/builder/#cmd
    猜你喜欢
    • 2017-12-10
    • 2018-05-26
    • 2022-01-10
    • 1970-01-01
    • 2020-09-24
    • 2021-03-28
    • 2021-06-16
    • 1970-01-01
    • 2020-04-27
    相关资源
    最近更新 更多