0
点赞
收藏
分享

微信扫一扫

docker 构建自己的image 镜像文件

docker build 构建自己的镜像文件。

1、在本地工程中运行生成一个springboot的可运行的jar。

因为我习惯用eclipse,所以在eclipse下新建一个springboot的工程,firstSpringboot的工程。

maven配置文件中,注意:必须指定生成文件后运行的主函数mian,否则可能导致的结果是无法访问main函数的错误。

docker 构建自己的image 镜像文件_spring

 

 

maven配置的pom.xml文件

docker 构建自己的image 镜像文件_docker_02

docker 构建自己的image 镜像文件_docker_03

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.springboot</groupId>
<artifactId>firstSpringboot</artifactId>
<version>0.0.1-SNAPSHOT</version>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
</dependencies>
<build>
<!-- 生成文件的包名称 -->
<finalName>firstSpringboot</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 必须指定主函数 -->
<configuration>
<mainClass>com.springboot.Application</mainClass>
<executable>true</executable>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>

View Code

springmvc中,访问后,会打印出这样一句话。

docker 构建自己的image 镜像文件_spring_04

 

 

执行 maven命令打包,也可通过工具直接build。mvn clean package 或install  都可以。

生成文件后如图所示。

docker 构建自己的image 镜像文件_jar_05

 

 

2、在本地测试一下是否可访问。

在本机doc下启动我们的jar包看看看是否可以启动。

如果没主函数main指定,会报找不到主干数错误。

doc下启动服务命令:

java -jar \路径\firstSpringboot
\target\firstSpringboot-0.0.1-SNAPSHOT.jar

 

docker 构建自己的image 镜像文件_jar_06

 

 

启动完成,本地测试,在浏览器中输入 :

http://localhost:8090/hello

访问通了,可见我们的jar包是ok的,页面展示如下:

docker 构建自己的image 镜像文件_spring_07

 

 

3、在/usr/local下创建一个dockerapp的目录,将本地生成的jar文件上传到docker服务器上的这个目录。/usr/local/dockerapp

cd /usr/loca
mkdir dockapp

然后通过ftp、或者secureCRT将我们的jar包上传到服务器下。

docker 构建自己的image 镜像文件_spring_08

 

  

4、在上传文件的目录/usr/local/dockerapp 下新建一个Dockerfile文件,文件内容定义jar包信息在docker容器中的名称。保存文件。

创建Dockerfile文件。

文件内容:意思是使用的是jdk8,将firstSpringboot.jar文件添加到docker容器下,并且名字为first-springboot.jar,对外声明启动端口是8090,跟我们的application.yml配置文件一样。最后就是执行命令生成

###java8环境镜像
FROM java:8
###复制文件到容器app-springboot
ADD firstSpringboot.jar /first-springboot.jar
###声明启动端口号
EXPOSE 8090
###配置容器启动后执行的命令
ENTRYPOINT ["java","-jar","/first-springboot.jar"]

 

生产可用Dockerfile

# 若用docker部署,将该文件复制到项目工程下
FROM openjdk:8-jre-alpine
VOLUME /tmp
ADD 项目应用名称-0.0.1-SNAPSHOT.jar app.jar
# RUN bash -c 'touch /app.jar'
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]
EXPOSE 8761

 

 

执行成功。如图所示:

 

5、用docker build -t 文件名称 . 这个命令构建镜像文件image ,后面那个“.”表示当前目录。

docker build -t first-springboot .

docker 构建自己的image 镜像文件_docker_09

 

6、查看镜像文件是否生成。

docker images

docker 构建自己的image 镜像文件_jar_10

 

 

 

7、运行docker run 命令启动我们的应用。

启动应用。

docker run -p 8080:8090 first-springboot

服务启动成功,如下图所示

docker 构建自己的image 镜像文件_docker_11

 

 

 

8、测试应用是否可访问。

访问地址:http://192.168.5.129:8080/hello

浏览器显示如下:证明很ok。

docker 构建自己的image 镜像文件_jar_12

 

 

9、测试原端口是否可以访问。

访问:http://192.168.5.129:8090/hello

请求失败。。

 

10、设置服务在后台运行

#在后台运行,在run后面加-d
docker run -d -p 8080:8090 first-springboot
#查看有哪些容器在运行
docker ps

  如图

docker 构建自己的image 镜像文件_spring_13

 

 

 

 总结:docker部署流程,有点复杂,但是熟练后,应该很简单。接着学。

举报

相关推荐

0 条评论