我目前是网络工程研二的一名学生,通过同学推荐了解到“飞天加速计划·高校学生在家实践”活动,并尝试参与了此次活动,我免费领取了两周的阿里云ECS使用权,通过这两周学到了许多东西,再次分享一下自己的体验感受,并记录一下自己的学习过程。本来想Java后端开发都是在本地部署项目,但是作为学生党笔记本性能有限,多开虚拟机是不可能开的,只有云主机才能维持的了生活。于是学生党就网上逛云服务器,发现阿里云正在搞活动,就先试试两周体验!
第二部分
在阿里云ECS使用过程中我感觉特别顺畅,特别是在做了阿里的小练习之后,感觉得心应手,不过对于国外IP阿里云服务器的设置目前还没有找到,接下来就分享一下我是用阿里云ECS学习linux已经搭建简单的docker服务器的过程:
1.在Windows上写好代码后,打包复制进centos(注意,这里只需要以下文件,不包含target)
2.使用mvn package命令打包生成target文件,文件中包含可以直接运行的jar包
3.直接运行jar包,注意是左边这个java -jar xxx.jar
4.可直接登陆端口8080查看了
其余内容查看网站Spring Boot 2 (四):使用 Docker 部署 Spring Boot - 纯洁的微笑博客 (ityouknow.com)
5.注意吧Dockerfile改一下
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD springboot-10-docker-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
springboot-10-docker-0.0.1-SNAPSHOT.jar这个必须写最后生成的jar包名()
mvn package docker:build//这句话的意思是,在打包成jar的同时构建docker镜像
也可以分开进行
1.mvn package//在父模块进行
2.mvn docker:build//在子模块进行
这句话的意思是先生成target文件,然后在运行docker构建镜像
第一次构建速度比较慢,因为需要下载包
运行镜像的时候需要用-d才能在后台运行
docker run --p 8080:8080 -t springboot/spring-boot-docker
Maven 插件构建镜像:
Docker>07 - 使用Maven构建Docker镜像 - 程序员大本营 (pianshen.com)文章
maven插件构建镜像有:全pom标签和读取Dockerfile两种方式。
方式一:全pom方式:
此种方式由于标签的限制,较模板化。
1、pom 依赖添加docker-maven插件
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- docker的maven插件,官网:https://github.com/spotify/docker‐maven‐plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!-- 镜像名称 -->
<!--<imageName>${project.artifactId}:${project.version}</imageName>-->
<imageName>192.168.25.131:4000/${project.artifactId}:${project.version}</imageName>
<!-- 插件读取Dockerfile进行构建 不再指定baseImage和entrypoint,而是使用dockerDirectory指定Dockerfile所在的路径 -->
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<!-- 用于指定需要复制的根目录,${project.build.directory}表示target目录。 -->
<directory>${project.build.directory}</directory>
<!-- 用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!-- 远程 docker 宿主机地址 ,也就是说宿主机地址与这个docker绑定了,远程连接 docker 需暴露宿主机2375端口,也就是说通过这个端口你可以对你的docker容器进行修改。-->
<dockerHost>http://192.168.25.131:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
2、到工程目录cmd 执行mvn 打包:
# 打包命令,这就是通过读取pom中的信息来构建
mvn clean package docker:build ‐DpushImage
看到如下构建步骤信息:
上传信息:
查看私有仓库:
执行docker images 同样可以看到构建的镜像。
方式二:引入 Dockerfile 构建镜像:
1、项目 src/main 下创建docker 目录,新建 Dockerfile:
2、编写 Dockerfile:
# 基础镜像
FROM java:8
# 作者
MAINTAINER Ron
# 数据卷
VOLUME /tmp
# 复制工程打包后 target 目录下的jar 到容器中
ADD app.jar app.jar
# 将docker暴露出12000端口用于控制
EXPOSE 12000
# 创建容器执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
3、修改 pom 依赖:
主要添加了 指定 Dockerfile 的位置
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- docker的maven插件,官网:https://github.com/spotify/docker‐maven‐plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!-- 镜像名称 -->
<!--<imageName>${project.artifactId}:${project.version}</imageName>-->
<imageName>192.168.25.131:4000/${project.artifactId}:${project.version}</imageName>
<!-- 插件读取Dockerfile进行构建 不再指定baseImage和entrypoint,而是使用dockerDirectory指定Dockerfile所在的路径 -->
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<!-- 用于指定需要复制的根目录,${project.build.directory}表示target目录。 -->
<directory>${project.build.directory}</directory>
<!-- 用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。 -->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!-- 远程 docker 宿主机地址 ,相当于2375端口与12000端口联系在一起,访问宿主机的2375等于访问docker12000,这样就可以对docker进行操作了-->
<dockerHost>http://192.168.25.131:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
4、同方式一,到工程目录cmd 执行mvn 打包:
# 打包命令
mvn clean package docker:build ‐DpushImage
可在控制台看到构建及上传的日志信息。
至此,全pom 和引入Dockerfile 两种方式都已实现镜像的构建。
docker run -p 8080:8080 -t springboot/spring-boot-docker
最后运行容器,由于tomcat默认暴露8080端口,所以可以将宿主机8080端口指定绑在某一个容器的8080端口
最后十分开心能够使用阿里云