1、将springboot项目打包成jar包,在本地运行一下看看是否能正常运行
如果出现运行出现xxx-SNAPSHOT.jar中没有主清单属性,在pom配置文件加上maven的打包配置
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring.boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
如果项目需要读取nacos的配置文件中含有中文,则启动需要指定uft-8编码,不然会报错 parse data from Nacos error
windows下可以使用 java -jar -Dfile.encoding=utf-8 命令启动
windows指定配置文件启动命令 java -jar springboot.jar -Dspring.profiles.active=dev
linux 指定配置文件启动 java -jar sharding-jdbc.jar --spring.config.location=/usr/local/java-project/sharding-jdbc/bootstrap.yml
2、在项目里新建一个名为Dockerfile的文件
3、编写Dockerfile文件
#基础镜像
FROM openjdk:8
#把当前目录下的jar包拷贝进docker镜像里
COPY sharding-jdbc.jar /sharding-jdbc.jar
#把当前目录下配置文件拷贝进docker镜像里
COPY bootstrap.yml /bootstrap.yml
#CMD命令用于指定这个容器启动的时候要运行的命令(会被docker 启动指定的命令覆盖)
#CMD ["java","-jar","-Dspring.config.location=/usr/local/java-project/sharding-jdbc/bootstrap.yml","/sharding-jdbc.jar"]
#对外暴露端口(可以不配置,使用jar包配置的端口)
#EXPOSE 8456
#ENTRYPOINT命令用于指定这个容器启动的时候要运行的命令(不会被docker启动指定的命令覆盖,docker启动指定的命令相当于追加命令)
ENTRYPOINT ["java","-jar","/sharding-jdbc.jar","--spring.config.location=/bootstrap.yml"]
4、Dockerfile文件和打包好的项目一同放到linux中
5、在Dockerfile文件和打包好的项目目录下使用命令 docker build -t sharding-jdbc:0.1 . 构建docker镜像
#选项及解释
-t的t是tag,表示生成的镜像的名称和版本号,repository(名称):tag(版本号),去掉:tag代表最新版本lastest
.表示当前构建时上下文的路径为当前目录,.的前面是有个空格的
第一次构造需要下载jdk镜像
6、使用命令 docker images 查看镜像是否构建成功
7、使用命令创建并运行 docker run -it -p 8123:8086 --name sharding-jdbc-docker -d sharding-jdbc:0.1
#选项及解释
-it:将Docker容器的输入绑定到当前终端,以便可以进行交互式操作。
-p <对外访问的端口>:<docker容器中程序使用的端口>:将对外访问的端口映射到容器中程序使用的端口,可以通过对外的端口访问Docker容器。
--name sharding-jdbc-docker:给Docker容器命名为appd。(不能重复)
-d sharding-jdbc:0.1:以名为app-docker的镜像为基础启动Docker容器并将其放入后台运行,如果前面指定了tag则需要使用repository:tag的格式
8、docker相关命令
创建并运行容器:docker run -it -p <docker端口>:<机器端口> --name <容器名> -d <镜像名>
显示运行的容器:docker ps
查看所有的容器:docker ps -a
删除容器:docker rm <容器ID或名称>
停止运行容器:docker stop <容器ID或名称>
运行容器:docker start <容器ID或名称>
查看容器运行日志:
动态查看日志:docker logs -f <容器ID或名称>
查看20行日志:docker logs --tail 20 <容器ID或名称>
删除镜像:docker rmi <镜像ID>
进去容器内部:docker exec -it <容器ID或名称> /bin/bash(根目录路径)
挂载容器内部文件路径和服务器文件路径映射:-v <外部路径>:<容器内部路径>(docker run时候加入该命令)
有问题和建议欢迎大家留言评论,谢谢~