maven项目,使用idea开发工具,用idea自带的docker插件,打包项目镜像文件到公司的开发服务器中,并在服务器上直接启动镜像文件,成功访问项目。
前提:linux服务器上已经安装了docker
参考几位大佬的文章:
https://www.cnblogs.com/spll/p/10059542.html
https://blog.csdn.net/weixin_42054155/article/details/90815393
自我试验:
目录
2.配置docker插件 参数,服务器上的docker地址配置在TCP socket中
3.编写项目中的Dockerfile文件(D一定要大写)并放在项目的根目录下。
1.先执行docker images命令,查看创建的镜像是否存在
2.已存在:执行创建并运行容器的命令,命令执行后出现一长串数字+英文,表示创建成功
一、idea安装并配置docker,生成镜像文件
1.idea安装docker插件。
idea版本:2020.2.3(这个版本自带docker插件),在plugins中是下面图片的样子:
2.配置docker插件 参数,服务器上的docker地址配置在TCP socket中
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
此时可以看到项目的target目录下,生成了两个jar、一个original(此时已经把项目和所有配置文件都打包到镜像文件了)
二、在linux上启动镜像并创建容器
1.先执行docker images命令,查看创建的镜像是否存在
2.已存在:执行创建并运行容器的命令,命令执行后出现一长串数字+英文,表示创建成功
docker run -d -p 端口号:端口号 --name name1 name1
-d:后台运行容器,并返回容器ID;
-p:指定端口映射,格式为:主机(宿主)端口:容器端口;(这一步操作是为了映射访问项目的端口号)
--name:为容器指定一个名称;第一个name1:主机名称,第二个name1:自己定义的容器名称
3.查看创建好的、运行中的容器
docker ps
4.查看所有容器
docker ps -a