docker jrebel_使用Docker容器配置JRebel

docker jrebel

JRebel-header-image-2 JRebel允许您将应用程序立即部署到您选择的应用程序服务器,从而跳过构建和重新部署过程。 所有主要的IDE(例如NetBeans,Eclipse和IntelliJ)都支持它。 它在各种应用程序服务器中也受支持,例如JBoss EAP,WildFly,WebLogic,WebsFear(err,WebSphere),Tomcat等。

您可以轻松地在JBoss Developer Studio中使用JRebel或在本地桌面上将JRebel与JBoss集成 。 它也可以轻松地与OpenShift上的JBoss Developer Studio和Ticket Monster一起使用

本技术提示将说明如何使用Docker容器设置JRebel。 具体来说,我们将使用Java EE 7动手实验(jrebel分支)提供的示例应用程序,带有Eclipse Mars M5的 JBoss Tools和在WildFly Docker容器中运行示例应用程序。

非常感谢Adam Koblentz( @akoblentz )帮助我完成了所有步骤!

让我们开始吧!

在Eclipse中安装JRebel

JRebel以三种模式运行:

  • 本地:应用服务器从IDE内部运行
  • 外部:应用服务器从IDE外部运行(例如使用CLI),但在同一台计算机上
  • 远程 :应用程序服务器在其他计算机,VM,容器或云上运行

Docker容器需要使用“远程”模式进行配置。

  1. 按照tools.jboss.org/downloads/中的说明安装JBoss Tools。 JRebel的远程模式只能使用IDE启用。 从Eclipse Marketplace安装JRebel插件

使用WAR打包rebel.xml和rebel-remote.xml

这些文件定义了类和资源在存档中的位置。

  1. 克隆Java EE 7 HOL回购:
    git clone https://github.com/javaee-samples/javaee7-hol.git
  2. (从solution目录中)在IDE中导入Maven项目,右键单击该项目,选择JRebel菜单,然后单击“启用JRebel Nature”。 这将在src/main/resources目录中生成rebel.xml ,看起来类似于:
    <?xml version="1.0" encoding="UTF-8"?>
    <application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://www.zeroturnaround.com/alderaan/rebel-2_0.xsd">
    
    	<classpath>
    		<dir name="/Users/arungupta/workspaces/javaee7-hol/solution/movieplex7/target/classes">
    		</dir>
    	</classpath>
    
    	<web>
    		<link target="/">
    			<dir name="/Users/arungupta/workspaces/javaee7-hol/solution/movieplex7/target/m2e-wtp/web-resources">
    				<exclude name="/"/>
    			</dir>
    		</link>
    		<link target="/">
    			<dir name="/Users/arungupta/workspaces/javaee7-hol/solution/movieplex7/src/main/webapp">
    			</dir>
    		</link>
    	</web>
    
    </application>
  3. 再次右键单击该项目,然后选择“启用远程处理”。 这将再次在src/main/resources目录中生成rebel-remote.xml ,其外观如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <rebel-remote>
        <id>movieplex7</id>
        <publicKey>XXXXXXX</publicKey>
    </rebel-remote>

    这需要在将要在IDE中使用JRebel的计算机上完成。 这将确保适当生成公共密钥。

  4. 将您的应用程序打包为
    mvn package

    这会将rebel.xmlrebel-remote.xml在WAR文件中。

配置和运行应用程序服务器

应用服务器需要了解JRebel代理和特定于平台的库。 如果较早安装了JRebel,则可以从Eclipse获得这两个文件。 在Mac上,这些文件位于eclipse/mars/m5/eclipse/plugins/org.zeroturnaround.eclipse.embedder_6.1.1.RELEASE-201503121801/jr6/jrebel/目录中。 确切的名称可能会因您的情况而有所不同。

  1. 使用Dockerfile构建映像:
    FROM jboss/wildfly
    
    COPY jrebel.jar $JBOSS_HOME/jrebel.jar
    COPY libjrebel64.so $JBOSS_HOME/libjrebel64.so
    
    RUN echo "JAVA_OPTS=\"\$JAVA_OPTS -Drebel.remoting_plugin=true -agentpath:\$JBOSS_HOME/libjrebel64.so\"" >> $JBOSS_HOME/bin/standalone.conf
    
    CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-c", "standalone-full.xml", "-b", "0.0.0.0"]
    
    RUN curl -L https://github.com/javaee-samples/javaee7-hol/blob/jrebel/solution/movieplex7-1.0-SNAPSHOT.war?raw=true -o /opt/jboss/wildfly/standalone/deployments/movieplex7-1.0-SNAPSHOT.war

    该图中的关键部分是:

    1. 使用官方的jboss / wildfly Docker映像
    2. 将JRebel代理程序和特定于平台的库复制到映像
    3. 配置应用服务器,使其了解“远程”模式和特定于平台的库
    4. 启动WildFly
    5. 从GitHub下载预构建的WAR文件。 这对您不起作用,您需要将其替换为以下内容:
      COPY movieplex7-1.0-SNAPSHOT.war $JBOSS_HOME/standalone/deployments/moviexplex7-1.0-SNAPSHOT.war

      该WAR文件与之前生成的文件相同。

  2. 实际将图像构建为:
    docker build -t javaee7-hol .
  3. 运行容器为:
    docker run -it -p 8080:8080 javaee7-hol

    并且应该显示类似以下内容:

    JAVA_OPTS:  -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Drebel.remoting_plugin=true -agentpath:/opt/jboss/wildfly/libjrebel64.so
    
    =========================================================================
    
    Mar 18, 2015 8:37:30 PM java.util.prefs.FileSystemPreferences$1 run
    INFO: Created user preferences directory.
    2015-03-18 20:37:40 JRebel:  
    2015-03-18 20:37:40 JRebel:  #############################################################
    2015-03-18 20:37:40 JRebel:  
    2015-03-18 20:37:40 JRebel:  JRebel Agent 6.1.1 (201503111716)
    2015-03-18 20:37:40 JRebel:  (c) Copyright ZeroTurnaround AS, Estonia, Tartu.
    2015-03-18 20:37:40 JRebel:  
    2015-03-18 20:37:40 JRebel:  Over the last 1 days JRebel prevented
    2015-03-18 20:37:40 JRebel:  at least 0 redeploys/restarts saving you about 0 hours.
    2015-03-18 20:37:40 JRebel:  
    2015-03-18 20:37:40 JRebel:  Server is running with JRebel Remoting.
    2015-03-18 20:37:40 JRebel:  
    2015-03-18 20:37:40 JRebel:  
    2015-03-18 20:37:40 JRebel:  #############################################################
    2015-03-18 20:37:40 JRebel:  
    20:37:46,219 INFO  [org.jboss.modules] (main) JBoss Modules version 1.3.3.Final
    20:37:47,340 INFO  [org.jboss.msc] (main) JBoss MSC version 1.2.2.Final

    JRebel许可证信息表明所有配置均正确。

    如果您使用Docker Machine设置Docker Host,那么现在应可通过192.168.99.100:8080/movieplex7/访问该应用程序。

配置Eclipse

最后一步是配置Eclipse,以便它知道应用程序的部署位置。

  1. 在Eclipse中,右键单击项目,选择JRebel,高级属性
  2. 单击“部署URL”旁边的“编辑”
  3. 单击“添加”并指定应用程序的URL,在本例中为192.168.99.100:8080/movieplex7/。
  4. 单击继续,应用,确定。

瞧,配置现已完成。

现在更改任何类,添加任何方法,更新任何实体,HTML或JSF页面将立即将更改推送到Docker容器。 无需重新部署应用程序。

请享用!

翻译自: https://www.javacodegeeks.com/2015/03/configure-jrebel-with-docker-containers.html

docker jrebel

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值