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的文件

springboot项目部署dockefile模版 springboot项目部署到docker_笔记

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中

springboot项目部署dockefile模版 springboot项目部署到docker_笔记_02

5、在Dockerfile文件和打包好的项目目录下使用命令 docker build -t sharding-jdbc:0.1 . 构建docker镜像

#选项及解释

-t的t是tag,表示生成的镜像的名称和版本号,repository(名称):tag(版本号),去掉:tag代表最新版本lastest

.表示当前构建时上下文的路径为当前目录,.的前面是有个空格的

第一次构造需要下载jdk镜像

springboot项目部署dockefile模版 springboot项目部署到docker_笔记_03

6、使用命令 docker images 查看镜像是否构建成功

springboot项目部署dockefile模版 springboot项目部署到docker_docker_04

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的格式

springboot项目部署dockefile模版 springboot项目部署到docker_bc_05

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时候加入该命令)

有问题和建议欢迎大家留言评论,谢谢~