windows环境 springboot+docker开发环境搭建与hello word
原文:
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‘ RUN echo "Asia/Shanghai" > /etc/timezone ENV JAVA_OPTS="" ENV spring.profiles.active="dev" ENTRYPOINT ["sh","-c","java -Dspring.profiles.active=prod $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.war"] 解释下这个配置文件: ?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,运行项目 ? 启用“Docker Quickstart Terminal”或直接从"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环境 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |