使用 WildFly, JBoss Developer Studio 和 Docker 开发应用 已翻译 100%

oschina 投递于 2013/11/22 07:10 (共 8 段, 翻译完成于 12-03)
阅读 3671
收藏 22
2
加载中

这是什么,这又是为什么

根据你创建应用的开发环境,我总能伤心的看到所有潜在的危险损害着你本地系统。你总是用同样的方式让你得系统变得一团糟。这个和你用什么开发语言或是什么开发框架没有关系,但是Java(和Maven)是个好东西,嗯,我还是举个例子吧!

开发环境不仅仅是IDE或者JDK,很多情况下都得有个应用服务器。我们的应用在开发服务器上工作良好,但当我们将其部署在正式服务器上时,有问题了:不同的JDK,不同的网络接口以及其它很多不同。所有的东西都会影响你的应用。

想想看如果现在有一个环境和你产品运行环境一模一样。

yale8848
yale8848
翻译于 2013/11/22 20:59
1

欢迎Docker!

Docker可以让你容易的创建容器快照。这意味着你可以在仓库中部署你的应用,创建快照,以及推送图片,然后你可以在仓库中启动应用。

我想写一系列有关Docker的博客,在博客中我将介绍怎样在Java(不仅仅是)世界中运用Docker让开发变得让人愉悦以及每次迭代修正都是可以预料的。

TD;DR;

这个博客中我将集中介绍应用服务器部署问题,以及怎样创建WildFly Java应用开发环境。我们将用JBoss Developer Studio作为IDE开发,然后将应用部署到服务器Docker容器里运行。奇怪吧?别急,继续读吧!不过要注意下面的东西可能很难懂,因为这是我第一次这么做。任何友好的提示开发者都会喜欢的,只需要你在评论中做一些笔记就行。

yale8848
yale8848
翻译于 2013/11/22 21:30
1

预备知识

首先我们得需要下面这些东西:

  1. JDK:你系统上必须有的东西,如果没有,执行命令:yum install java-develshould help(linux系统)。或者访问 Oracle ...
  2. Docker:如果你运行的是Fedora操作系统,你可以用docker-io打包可用的repo文件。要不你也可以访问Docker网站中的安装介绍
  3. JBoss Developer Studio:你可以从这里下载。
  4. WildFly:这个需要IDE来检测服务器版本以及需要所有必须的本地库。我们可以在这里下载。请下载8.0.0.Beta1版本。

下一步假设你已经将所有需要的安装完毕并能正常工作。

yale8848
yale8848
翻译于 2013/11/23 19:01
1

Docker 镜像

我在WildFly上创建了Docker镜像。应用服务器已经配置好了后准备工作,然后我们可以在IDE中管理和部署应用了。

这个镜像在Docker里的goldmann/jbds-wildfly仓库中。

请pull这个仓库。你将得到最新的版本:

docker pull goldmann/jbds-wildfly
你现在可以运行这个命令并确认它是否正常工作。
$ docker run -i -t goldmann/jbds-wildfly:wildfly
    容器以开始运行了。你可以用你得IDE部署你的应用了  

好的,它已经开始工作了。现在我们可以继续设置IDE了。


注意:你可以用-d switch来使你的容器进入分离模式。你可以参考运行命令文档

JBoss开发环境

让我们打开JBDE来看看应用服务器相关的知识。

yale8848
yale8848
翻译于 2013/11/23 19:21
1

添加一个新的远程连接

请注意,你可以通过导入连接跳过这一步。用鼠标右键单击Remote Systems选项卡,选择导入....
在Remote Systems选项卡中,我们需要创建一个连接到Docker容器的新链接。请从列表中选择Linux。
接下来请让主机名字段中输入有LOCALHOST。最后是指定连接名,我选择了Docker。
请注意,这里的Docker图像导出了以下Docker端口:22,8080 和 9990作为本地端口:10022,18080 和 19990。
在Files这一步,请选择ssh.files的配置。在Processes这一步,请选择processes.shell.linuxconfiguration。在Shells这一步,请选择ssh.shells配置。在Ssh Terminals这一步,请选择thessh.terminals配置。
创建好连接之后,请右键单击Ssh Terminals,并选择Subsystems。在该页面中我们需要将端口从22变更到10022。

Specifying the remote SSH port

现在,我们可以尝试连接到该容器,在该连接上单击右键,选择连接。你会被询问密码和用户ID,请输入useroot/verysecure。
请注意,如果你选择了保存密码选项,就会被要求创建/使用安全Secure Storage Password。
还有一个很好的功能,那就是Ssh Terminal——你可以启动一个终端,直接在容器内执行命令。试试吧!

LeoXu
LeoXu
翻译于 2013/12/03 08:31
1

排除故障

如果碰到的任何问题,请尝试以下操作:
  1. 请确保Docker容器是运行这的。
  2. 检查防火墙。(至少在Fedora中)Docker容器连接到了Docker0接口。
  3. 如果这没有帮助,那就写点评论让我知道,我会尽力帮助你的。

添加新服务器

请解压你下载的WildFly压缩包。
在服务器选项卡中请选择添加新的服务器。从可用的服务器列表中选择的JBoss Community > WildFly8.0(实验版),然后点击下一步。
请将服务器的主机名称字段从localhost 变更到0.0.0.0。因为容器的性质,这将让我们可以从IDE中直接管理服务器。

Create new server wizard

下一步,在主目录字段中指定目录到你解压WildFly压缩包后的内容所放置的地方。

LeoXu
LeoXu
翻译于 2013/12/03 08:12
1

接下来请检查侦听的所有接口...,并且暴露出你的管理复选框。我们需要将部署从本地变更到远程,请在下拉列表中选择远程系统部署。

完成了主机设置向导后,请在下拉列表中选择新建Docker主机。

如此我们就已经准备好来设置远程服务器主机域了。点击 Browse and expand Root >/> USR/ > share > wildfly。

Browsing for the remote home directory of the application server

最后一件事是更改服务器的设置,双击新创建的服务器。

在服务器端口部分,请将Web端口设置成18080,管理端口设置成19990。

在管理登录凭据部分请输入admin和Admin#70365作为凭据。

现在,你就可以尝试启动您的服务器了。见控制台选项卡的输出。

OK,我们已经定义了一个新的服务器,这是一个运行着的容器。让我们编写一个应用程序来使用它!

LeoXu
LeoXu
翻译于 2013/12/03 08:16
1

应用程序

JBoss的开发者为多种技术提供了一个基于JBoss开发框架的样例集。有许多文章和视频,想要更多令人激动的信息,请访问这里https://github.com/jboss-developer/jboss-eap-quickstarts[code].

我们将,通过创建一个新工程来使用一个样例,选择 File>New>Example...>Project Example。随便选择一个你想要的例子。我使用的是Web Application>kitchensink .

JBDS 将会下载所有需要的代码,并为运行做准备。

最后一步就是将应用添加到服务器上。它会被自动部署,在这个地址可以查看到http://localhost:18080/jboss-as-kitchensink 。

The kitchensink application

完成

请注意,你可以停止容器,运行其他的,并且你能够继续开发你的应用。

如果你遇到了一次很长时间的部署,那你很可能是遇到JBIDE-12202问题,这将会在下一版JBDS中修复。 

tnjin
tnjin
翻译于 2013/11/27 22:56
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(9)

jk409
jk409
这样啊,之前还以为docker不是系统级别的虚拟机,而是应用级别的虚拟容器,,,
Credo-Zhao
Credo-Zhao
翻译这个?不如翻译下官方的那些手册哈...
jingdor
jingdor

引用来自“dfar2008”的评论

引用来自“jingdor”的评论

引用来自“抢小孩糖吃”的评论

既然docker有独立的IP,独立的根服务内容,和虚拟机有什么区别?

本来就是虚拟机

docker和一般的虚拟机不太一样吧

恩 docker 属于 lxc 一类
dfar2008
dfar2008

引用来自“jingdor”的评论

引用来自“抢小孩糖吃”的评论

既然docker有独立的IP,独立的根服务内容,和虚拟机有什么区别?

本来就是虚拟机

docker和一般的虚拟机不太一样吧
jingdor
jingdor

引用来自“抢小孩糖吃”的评论

既然docker有独立的IP,独立的根服务内容,和虚拟机有什么区别?

本来就是虚拟机
抢小孩糖吃
抢小孩糖吃
既然docker有独立的IP,独立的根服务内容,和虚拟机有什么区别?
FreeZ
FreeZ

引用来自“hy_2014”的评论

我还是不明白docker,为什么能解决掉production server的兼容性问题。 难道在production server上也部署docker吗?

对,在production server上也要部署docker
hy_2014
hy_2014
我还是不明白docker,为什么能解决掉production server的兼容性问题。 难道在production server上也部署docker吗?
crossmix
crossmix
ok
返回顶部
顶部