Docker Java EE开发人员的所有事物–在Windows上使用Maven

docker_all_the_things 如今,每个人似乎都在使用Docker。 随着Microsoft致力于将其集成到Windows中,整个主题变得更加有吸引力。 由于许多中间件开发人员都在运行Windows,所以我想自己尝试一下,并在使用Docker容器,主机和来宾以及命令行选项的过程中,尽可能减少构建和运行映像的过程中提供更多提示。 。 Arun在最近的博客文章中对Docker进行了很好的介绍 。 我在这里跳过了这个,直接进入了它。

安装Boot2Docker

Docker Engine使用特定于Linux的内核功能,因此要在Windows上运行它,我们需要使用轻量级虚拟机。 有一个名为Boot2Docker的助手应用程序,它可以使安装和运行一切变得非常简单。 第一步是下载最新版本的二进制安装程序并执行它。 它将安装Oracle VirtualBoxMSYS-git ,boot2docker Linux ISO和Boot2Docker管理工具。 下一步是运行Boot2Docker启动脚本(安装后桌面上会有一个小鲸鱼图标)。 它将设置Docker主机并通过ssh连接到主机。 如果要在以后的状态下再次执行此操作,只需键入:boot2docker ssh。

boot2docker

目前没有基于Windows的系统的Docker客户端。 因此,ssh基本上是一种解决方法,它可以很好地工作,并且可能也是一种众所周知的方法。 随着微软最近宣布与Docker建立新的合作伙伴关系,这种情况可能很快就会改变。 如果要构建自己的Docker客户端,请在Khalid Mouss的博客文章中找到有关此信息的更多信息。

给您的一些提示。 您需要在PATH中具有%MSYS-git_INSTALL%/ bin目录。 它包含一个cmd行ssh客户端。 如果要使用PUTTY,请确保使用用户“ root”和密码“ tcuser”连接到Docker主机。

如果您正在运行任何类型的VPN客户端,则绝对会遇到麻烦。 Docker通常以仅主机模式运行,并且已安装的VPN客户端将其转换为NAT。 转到VirtualBox管理控制台,打开boot2docker-vm的设置,并为Docker API添加端口转发规则。 我们稍后将需要它。

netstat

一个小警告:默认的Docker API端口是2375。在我的情况下,这不是真的,因此我必须首先找出Docker API正在侦听的端口。 使用主机上的netstat执行此操作。 因此,在此示例中,我基本上使用了直接来宾来托管2376上的映射。 全做完了。 现在,您可以启动hello world示例了。 只需键入“ docker run hello-world”,然后等待“来自Docker的Hello”即可。 现在您可以开始了。

如果您需要Boot2Docker的完整参考,这是一个非常有用的网站

为什么我们确实要使用Docker?

最近关于Docker的炒作是什么? 它有一段历史,从长远来看,它可能仅通过定义可以部署的完整软件包就可以支持微服务部署。 包括基础架构要求。 将Docker容器视为可以运行定义的映像的应用程序服务器。 并将映像视为大型Maven存档,其中不仅包含您的应用程序,还包含操作系统以及运行应用程序所需的所有部件。 不管喜欢与否,但是每个人都在玩弄它,并且归根结底,这是解决一些问题的一种方法。 我并不是在告诉您,我立即爱上了它,但至少我希望它能帮助我进行演示和展示。 而且,我只需要在Java EE应用程序中定义一堆依赖项和Maven插件,然后神奇地运行的一切就是我喜欢的东西。 但是,让我们看看它需要什么以及如何去做。

已经可用的图像–例如WildFly

说到图像:有一堆图像准备就绪。 在JBoss,我们为您准备了一个特殊的微型站点,其中包含我们准备运行的所有Docker映像 。 如果要使用它们中的任何一个,基本上只需将它们安装在容器中并启动它。 这样,您就可以运行任何组件,基本上就像在计算机上本地运行该组件一样。 唯一的区别是,它运行在您的“ Docker主机”中。 如果要启动WildFly,只需执行以下Docker命令:

docker run -it -p 9990:99 jboss/wildfly

Docker自动提取相关位(可能要花一些时间),然后从该映像启动一个容器。 端口映射实际上是在主机和容器之间。 还记得上面的VPN问题吗? 如果您想尝试,也请确保在VirtualBox中添加端口映射。 结果非常清楚:您现在在容器中运行了WildFly。 映射所需的端口并像通常使用远程实例一样使用它。 如果您想要更多图像,则可以浏览和搜索Docker Hub 。 已经有很多了。

那样使用Docker并不是其背后的想法。 实际上,映像不仅应包含基本组件,而且还应包含完整配置的应用程序。

建立自己的图像–各种方式

因此,您需要构建自己的图像。 有不同的方法可以做到这一点。 您可以更新从图像创建的容器,然后将结果提交到图像。 或创建自己的Dockerfile来指定创建映像的说明,或者可以使用Maven之类的构建工具来创建映像。 Dockerfile方法非常强大,并且需要大量的输入和可视化处理。 我一直在寻找一种从Maven创建图像的简单方法。 因为,这还是我用于项目的方式。

使用Maven构建Docker映像

有很多不同的Maven插件可以提供我一直在寻找的这种功能。 在这一天结束时,Fabric8团队使用了Maven的多克-插件通过由罗兰·胡斯 。 该插件可以构建和发布图像,还可以启动和停止容器以进行集成测试和开发。 我在设置它时有些挣扎,但我仍在尝试将其集成到我的应用程序中的最佳方法,因此,这基本上是我的发现和解决方案的第一列表,并且没有完整的用户指南。 请查看示例和插件的官方用户指南以获取更多详细信息。 我将在我的下一篇博客文章中构建一个完整的示例,并逐步引导您。

DOCKER_HOST环境变量

这个插件正常工作的第一件事显然是DOCKER_HOST环境变量。 由于Windows的整体体验目前还比较笨拙,因此在启动vm时未设置此变量。 好消息是,您已经通过安装和执行端口映射了解了所有需要了解的内容。 因此,您基本上只需进行设置即可:

set DOCKER_HOST=tcp://127.0.0.1:2376

确保将maven-docker-plugin中的常规<configuration>部分指向相同的

<dockerHost>https://127.0.0.1:2376</dockerHost>
证书和HTTPS连接

从1.3.0版本开始,与boot2docker一起使用时,Docker远程API需要通过SSL和证书进行身份验证进行通信。 因此,您需要配置证书。 在.boot2docker / certs文件夹中找到它们,并确保也将此路径添加到您的插件配置中。

<certPath>C:/Users/myfear/.boot2docker/certs/boot2docker-vm</certPath>

现在就这样。 如果您也有关于如何在Windows上使用Docker的经验,请告诉我。

翻译自: https://www.javacodegeeks.com/2014/12/docker-all-the-things-for-java-ee-developers-on-windows-with-maven.html

要在 Windows 上开发 Python 并将其发布到 CentOS,可以使用 Docker 容器化应用程序的方式。以下是一些步骤: 1. 在 Windows 上安装 Docker Desktop。在 Docker Desktop 中启动 Docker。 2. 使用 Dockerfile 创建一个 Docker 镜像,其中包括所需的 Python 环境和应用程序代码。例如,以下是一个示例 Dockerfile: ``` FROM python:3.8.1-alpine WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD [ "python", "./app.py" ] ``` 3. 将 Dockerfile 放在项目根目录中,并在命令行中导航到该目录。然后使用以下命令构建 Docker 镜像: ``` docker build -t myapp . ``` 这将在本地构建名为“myapp”的 Docker 镜像。 4. 现在,您可以将 Docker 镜像推送到 Docker Hub 或私有 Docker Registry 中。使用以下命令登录到 Docker Hub: ``` docker login ``` 5. 将 Docker 镜像推送到 Docker Hub: ``` docker tag myapp username/myapp docker push username/myapp ``` 6. 在 CentOS 中安装 Docker,并在命令行中使用以下命令从 Docker Hub 拉取 Docker 镜像: ``` docker pull username/myapp ``` 7. 运行 Docker 镜像: ``` docker run -d -p 5000:5000 --name myapp username/myapp ``` 这将在 CentOS 中启动名为“myapp”的 Docker 容器,并将其映射到本地端口 5000。 8. 现在,您可以使用浏览器或其他工具访问在 CentOS 中运行的 Python 应用程序。例如,如果您将应用程序绑定到本地端口 5000,则可以在浏览器中输入“http://localhost:5000”来访问该应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值