【问题标题】:mvn jetty:run not reflecting changes when run inside dockermvn jetty:在 docker 内运行时运行不反映更改
【发布时间】:2015-07-01 08:58:48
【问题描述】:

我有一个简单的井字游戏 Java 网络应用 https://github.com/rajaraodv/tictactoe 这是一个 Maven 项目。它使用 Jetty 通过执行 mvn jetty:run 来运行 Web 应用程序。当它在本地运行时,我可以轻松地修改 JavaScript 文件并在刷新浏览器时立即看到更改。但是,当我通过挂载源目录的 Docker 运行它时,类似的更改不会得到反映。

注意:我将源目录安装在 docker-compose.yml 文件中。我看到文件中反映了更改,但码头没有收到更改。

请注意:需要JDK 7

在 localhost 上测试:

  mvn clean install
  mvn jetty:run
  Open localhost:8080 to see the app.
  Add an alert(1); in `doInit` function in this JavaScript https://github.com/rajaraodv/tictactoe/blob/master/src/main/webapp/WEB-INF/components/ttt/TicTacToeGrid/TicTacToeGridController.js
  Refresh the browser and you'll see an alert dialog

在 Docker 上进行测试(使用 Docker compose):

    docker-compose up
    Add an alert(1); in `doInit` function in [this JavaScript][3]    
    ...Refresh browser, but the change is not reflected

我错过了什么?

【问题讨论】:

  • 我建议从检查文件权限开始调试(类似于docker exec -it container-id ls -l /usr/src/app)。
  • jetty-maven-plugin 仅供本地开发使用。不支持所有其他用途。
  • @JoakimErdfelt 用于本地开发,但在容器内。
  • @SlavaSemushin 有什么我应该查看的特定权限吗?
  • 顺便说一句,您可以在任何码头应用程序中测试它,但它不起作用。

标签: java maven docker jetty docker-compose


【解决方案1】:

在您的 Dockerfile 中,您为源目录执行 ADD。 而是为该路径指定一个卷。 使用 dockerfile,它会在容器构建时添加 src,然后挂载不会在 compose 中执行任何操作。

【讨论】:

  • 这看起来对吗? FROM maven:3.3.3-jdk-7 RUN mkdir --parents /usr/src/app ADD 。 /usr/src/app VOLUME /usr/src/app WORKDIR /usr/src/app RUN mvn clean install CMD mvn jetty:run
  • 顺便说一句,如果我这样做:“docker exec -it tictactoe_web_1 bash”我可以看到容器内文件的变化。但码头并没有捡到零钱。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-02
相关资源
最近更新 更多