maven项目,使用idea开发工具,用idea自带的docker插件,打包项目镜像文件到公司的开发服务器中,并在服务器上直接启动镜像文件,成功访问项目。

前提:linux服务器上已经安装了docker




自我试验:

目录

一、idea安装并配置docker,生成镜像文件

        1.idea安装docker插件。

        2.配置docker插件 参数,服务器上的docker地址配置在TCP socket中

        3.编写项目中的Dockerfile文件(D一定要大写)并放在项目的根目录下。

        4.编写pom文件

       5.先clean,再package

二、在linux上启动镜像并创建容器

1.先执行docker images命令,查看创建的镜像是否存在

2.已存在:执行创建并运行容器的命令,命令执行后出现一长串数字+英文,表示创建成功

3.查看创建好的、运行中的容器

4.查看所有容器

一、idea安装并配置docker,生成镜像文件

        1.idea安装docker插件。

         idea版本:2020.2.3(这个版本自带docker插件),在plugins中是下面图片的样子:

linux 镜像打包工具 linux怎么打包镜像_docker

TCP socket中

linux 镜像打包工具 linux怎么打包镜像_linux 镜像打包工具_02

        3.编写项目中的Dockerfile文件(D一定要大写)并放在项目的根目录下。

# 指定基础镜像
FROM java:8
# 维护者信息
MAINTAINER xxx
# 用于指定持久化目录
VOLUME /tmp
# 将本地文件添加到容器中(这时是打包到本地项目中的target目录下,因为jar有个前缀是target)
ADD target/v2x-information-service-1.0.0.jar informationservice.jar
ADD target/config config
#COPY target/lib
#ADD target/conf
# 指定于外界交互的端口
EXPOSE 12345
#设置时区 run后面
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

# 配置容器,使其可执行化
#ENTRYPOINT exec java -Xms512m -Xmx512m -jar /app.jar
ENTRYPOINT exec java $JAVA_OPTS -jar -Duser.timezone=GMT+08 /informationservice.jar

ENV LC_ALL en_US.UTF-8

        4.编写pom文件


<build>
    <finalName>${project.artifactId}-${project.version}</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.4.10</version>
            <executions>
                <execution>
                    <id>default</id>
                    <goals>
                        <!--  如果package时不想用docker打包,就注释掉这个goal -->
                        <goal>build</goal>
                        <goal>push</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <repository>${project.artifactId}</repository>
                <dockerHost>xx.xxx.xxx.xxx:2375</dockerHost>
                <tag>latest</tag>
                <dockerfile>${project.basedir}</dockerfile>
                <buildArgs>
                    <!--  提供参数向Dockerfile传递 -->
                    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
            </configuration>
        </plugin>
    </plugins>
</build>


       5.先clean,再package

linux 镜像打包工具 linux怎么打包镜像_spring boot_03

此时可以看到项目的target目录下,生成了两个jar、一个original(此时已经把项目和所有配置文件都打包到镜像文件了)

二、在linux上启动镜像并创建容器

1.先执行docker images命令,查看创建的镜像是否存在

linux 镜像打包工具 linux怎么打包镜像_intellij-idea_04

2.已存在:执行创建并运行容器的命令,命令执行后出现一长串数字+英文,表示创建成功

docker run -d -p 端口号:端口号 --name name1 name1

linux 镜像打包工具 linux怎么打包镜像_intellij-idea_05

-d:后台运行容器,并返回容器ID;

-p:指定端口映射,格式为:主机(宿主)端口:容器端口;(这一步操作是为了映射访问项目的端口号)

--name:为容器指定一个名称;第一个name1:主机名称,第二个name1:自己定义的容器名称

3.查看创建好的、运行中的容器

docker ps

4.查看所有容器

docker ps -a