windows环境 springboot+docker开发环境搭建与hello word

1,下载安装 docker toolbox

下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/

docker toolbox 是一个工具集,它主要包含以下一些内容:

Docker CLI 客户端,用来运行docker引擎创建镜像和容器
Docker Machine. 可以让你在windows的命令行中运行docker引擎命令
Docker Compose. 用来运行docker-compose命令
Kitematic. 这是Docker的GUI版本
Docker QuickStart shell. 这是一个已经配置好Docker的命令行环境
Oracle VM Virtualbox. 虚拟机

下载完成之后直接点击安装,安装成功后,桌边会出现三个图标,入下图所示:

点击 Docker QuickStart 图标来启动 Docker Toolbox 终端。

2,新建一个springboot项目

添加一个默认的controller

@RestController
public class DefaultController {

    @RequestMapping("/")
    public String home() {
        return "Hello Docker World ";
    }
}

启动这个项目检查是否在我docker情况下正常访问

3,修改pox.xml改为docker编译

properties属性节点加入:

<!--properties节点中设置docker镜像的前缀“springboot”-->
<docker.image.prefix>springio</docker.image.prefix>

build节点修改为

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- Docker maven plugin -->
            <plugin>
                <!-- https://mvnrepository.com/artifact/com.spotify/docker-maven-plugin -->
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.war</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <!-- Docker maven plugin -->
        </plugins>
    </build>

4,添加DockerFile

目录结构

文件内容

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD demo-docker-0.0.1-SNAPSHOT.war app.war
RUN sh -c ‘touch /app.war‘
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.war" ]

解释下这个配置文件:

VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
项目的 jar 文件作为 "app.war" 添加到容器的
ENTRYPOINT 执行项目 app.war。为了缩短 Tomcat 启动时间,添加一个系统属性指向 "/dev/urandom" 作为 Entropy Source

 5,添加maven编辑命令进行编辑 

mvn package docker:build

点击execute开始执行编译成docker image,正常情况下,会看到下面的步骤信息

[INFO] Building image springio/demo-docker
Step 1/6 : FROM openjdk:8-jdk-alpine

 ---> 2cfb1dc1f0c8
Step 2/6 : VOLUME /tmp

 ---> Using cache
 ---> 0641ab6474fc
Step 3/6 : ADD demo-docker-0.0.1-SNAPSHOT.war app.war

 ---> c01da61fbe6d
Step 4/6 : RUN sh -c ‘touch /app.war‘

 ---> Running in c8946506f292
Removing intermediate container c8946506f292
 ---> 12383d2f8329
Step 5/6 : ENV JAVA_OPTS=""

 ---> Running in 07d5bebe9e00
Removing intermediate container 07d5bebe9e00
 ---> e8f8f4242553
Step 6/6 : ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.war" ]

 ---> Running in 39ce4bf989ba
Removing intermediate container 39ce4bf989ba
 ---> dca2a0984c5d
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built dca2a0984c5d
Successfully tagged springio/demo-docker:latest
[INFO] Built springio/demo-docker
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 14.386 s
[INFO] Finished at: 2019-01-23T16:56:36+08:00
[INFO] Final Memory: 57M/470M
[INFO] ------------------------------------------------------------------------

Process finished with exit code 0

6, 运行项目

直接从"Oracle VM VirtualBox"界面进入default虚拟机,不需要输入密码即可进入root环境

输入下列命令查看已存在的image

docker images

得到结果

输入下面命令启动项目

docker run -p 8080:8080 -t springio/demo-docker

启动信息如下:

  .   ____          _            __ _ _
 /\\ / ___‘_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | ‘_ | ‘_| | ‘_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  ‘  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.1.RELEASE)

2019-01-23 09:02:49.987  INFO 1 --- [           main] c.e.demodocker.DemoDockerApplication     : Starting DemoDockerApplication v0.0.1-SNAPSHOT on 740b53e853e9 with PID 1 (/app.war started by root in /)
2019-01-23 09:02:50.001  INFO 1 --- [           main] c.e.demodocker.DemoDockerApplication     : No active profile set, falling back to default profiles: default
2019-01-23 09:02:53.582  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2019-01-23 09:02:53.685  INFO 1 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2019-01-23 09:02:53.692  INFO 1 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/9.0.13
2019-01-23 09:02:53.722  INFO 1 --- [           main] o.a.catalina.core.AprLifecycleListener   : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64/server:/usr/lib/jvm/java-1.8-openjdk/jre/lib/amd64:/usr/lib/jvm/java-1.8-openjdk/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]
2019-01-23 09:02:54.560  INFO 1 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-01-23 09:02:54.561  INFO 1 --- [           main] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 4389 ms
2019-01-23 09:02:55.178  INFO 1 --- [           main] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService ‘applicationTaskExecutor‘
2019-01-23 09:02:55.671  INFO 1 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ‘‘
2019-01-23 09:02:55.681  INFO 1 --- [           main] c.e.demodocker.DemoDockerApplication     : Started DemoDockerApplication in 6.796 seconds (JVM running for 7.909)

使用docker ps查看已运行的容器进程

表格字段说明

CONTAINER_ID      表示容器ID
IMAGE             表示镜像名称
COMMAND           表示启动容器时运行的命令
CREATED           表示容器的创建时间
STATUS            表示容器运行的状态。UP表示运行中,EXITED表示已停止
PORTS             表示容器对外的端口号
NAMES             表示容器名称,该名称默认由Docker自动生成,也可使用docker run 命令的 -name 选项自行指定

几个docker命令

docker start [CONTAINER_ID] :启动一个或多个已经被停止的容器
docker stop [CONTAINER_ID] :停止一个运行中的容器
docker restart [CONTAINER_ID]:重启容器

7,测试:

访问你虚拟就ip地址+启动时指定的端口号访问spring boot项目

可以在虚拟机中通过 ifconfig查看

输入ifconfig命令可以看到default有三个网段的IP地址,分别为:

docker0: 172.17.0.1,这个是docker的网桥。
eth0:10.0.2.15,这个网段在Ubuntu环境中是没有的,暂不知道为什么会多这一个。
eth1:192.168.99.100,这个数宿主机的IP地址。

另外也可以在本地cmd中,使用 docker-machine env   docker info 查看docker环境

原文地址:https://www.cnblogs.com/ejiyuan/p/10310207.html

时间: 2024-10-08 21:31:54

windows环境 springboot+docker开发环境搭建与hello word的相关文章

Windows系统下Android开发环境搭建

“工具善其事,必先利其器”.要想学好Android,搭建好Android开发环境是一个良好的开端. Windows系统下Android开发环境主要有4个大的步骤.分别是: 1.JDK的安装 2.eclipse的安装 3.Android SDK 的安装 4.Android ADT插件的安装 ---------------------------------------------------------------------------------------------------------

图文详解如何搭建Windows的Android C++开发环境

原地址:http://www.apkbus.com/android-18595-1-1.html //=====================================================================//TITLE://    图文详解如何搭建Windows的Android C++开发环境(一)//AUTHOR://    norains//DATE://    Thursday  14-April-2011//Environment://    Cygw

Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。

今天为在Windows下建立PHP开发环境,在考虑下载何种PHP版本时,遭遇一些让我困惑的情况,为了解决这些困惑,不出意料地牵扯出更多让我困惑的问题. 为了将这些困惑一网打尽,我花了一下午加一晚上的时间查阅了大量资料,并做了一番实验后,终于把这些困惑全都搞得清清楚楚了. 说实话,之所以花了这么多时间,很大程度上是由于网上的资料几乎全都是支离破碎.以讹传讹的.既然我已经搞懂了,就花时间整理出来,即方便自己看,也便于大家阅读.相信通过这篇文章,可以解答很多在Windows下搭建PHP开发环境的朋友的

Go语言学习笔记(一) : 搭建Windows下的Go开发环境

最近突然对Go语言产生了兴趣,主要是因为在使用python的时候遇到了一些不爽的问题,然后发现了Go.Go是Google出的一个动态语言,语法和C++接近,性能也非常的好,而且还支持编译成exe发布,并且不依赖任何虚拟机(其实是打包在exe里面了),这种好语言怎么能够错过?所以便一时兴起,开始学习了起来.由于本人还处于异常小白的阶段,所以文章中可能不免有些错误,欢迎大家各种指正. 安装Go 前往Go语言的官方网站:http://golang.org/, 下载对应平台的安装包.如果是x86的系统可

windows下python web开发环境的搭建

windows下python web开发环境: python2.7,django1.5.1,eclipse4.3.2,pydev3.4.1 一. python环境安装 https://www.python.org/ftp/python/2.7/python-2.7.amd64.msi 不多说,装完后把C:\Python27加入到path环境变量里. 然后就溜溜python,看看version啦.OK,next step. 二. python web开发框架django安装 django是一个采用

Windows平台下Qt开发环境的搭建

Qt 是采用开源和商用双协议发布的开放源代码的图形开发类库,现在很多图形化的开源软件都使用了Qt. 下载地址:http://qt-project.org/downloads 1. 下载安装包 你可以从下载页下载已经编译好的二进制安装包,也可以下载源码自行编译,下面是二进制软件安装包下载列表的部分截图. 可以看到,当前最新的版本是Qt 5.3.1,目前已经提供了Window 32/64bit,Linux 32/64bit,Mac, Android以及iOS版本的开发包.本文档中将介绍目前最新的最复

Windows 7 下 PHP 开发环境搭建(手动)

Windows 7 下 PHP 开发环境搭建 1.说明 做开发的都知道一句话,就是“站在巨人的肩膀上”.确实现在打开浏览器随便一搜很多一键安装PHP环境的软件,比如wamp.xampp.AppServ....其实我之前也一直在用wamp,对于初学者确实很方便,一键安装,然后遇到不会的再去查,去改配置,等等. 但是用长了你会发现,很多问题根本不是所谓“一键安装”后就不会发生了!当你用wamp.xampp..对环境搭建感觉轻车熟路并且把注意力都放在php逻辑实现的时候很多bug都是在环境配置层出现的

Windows平台下React-Native开发环境搭建

React-Native是由Facebook开发的开源框架,主要用于开发原生APP,是新一代的在移动APP用户体验和Web开发效率间建立平衡点的新型技术.React-Native可以利用JavaScript语言快速开发出高质量的原生应用,正如其设计目标:“Learn Once,write anywhere”,程序员通过一次学习RN的核心技术便可以快速开发出IOS和Android移动应用.大大降低学习成本.由于Facebook的工程师团队大部分使用Mac进行开发,所以现阶段React-Native

转:Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。

原文来自于:http://www.ituring.com.cn/article/128439 Windows下的PHP开发环境搭建——PHP线程安全与非线程安全.Apache版本选择,及详解五种运行模式. 今天为在Windows下建立PHP开发环境,在考虑下载何种PHP版本时,遭遇一些让我困惑的情况,为了解决这些困惑,不出意料地牵扯出更多让我困惑的问题. 为了将这些困惑一网打尽,我花了一下午加一晚上的时间查阅了大量资料,并做了一番实验后,终于把这些困惑全都搞得清清楚楚了. 说实话,之所以花了这么