黑马瑞吉外卖项目部署到docker中

1。修改pom文件

<properties>
   <java.version>1.8</java.version>
   <!--规定docker打包后镜像名称前缀-->
   <docker.image.prefix>reggie_take_out</docker.image.prefix>
</properties>
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.4.5</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>

            <!-- 跳过单元测试 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>

            <!--使用docker-maven-plugin插件-->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
<!--                <version>1.0.0</version>-->
                <configuration>
                    <!--镜像名称-->
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!--jar 包所在目录,缺省为target-->
                            <directory>${project.build.directory}</directory>
                            <!--jar 包名,缺省为 $project.artifactId}-${project.version}-->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>

2。新建docker文件夹及dockerfile文件,images文件夹存放上传图片

 3。dockerfile内容:

# 使用 JDK 8 环境为基础环境,如果镜像不是本地的将会从 DockerHub 进行下载
FROM java:8
# 在宿主机的 /var/lib/docker 目录下创建一个临时文件并把它链接到 tomcat 容器的工作目录 /tmp目录
VOLUME /tmp
EXPOSE 8081
# 复制文件并重命名 spring-boot-docker-1.0.jar 表示打包后的 jar 包名称
ADD reggie_take_out-1.0-SNAPSHOT.jar reggie_take_out.jar
ADD images/ /images/
# 为了缩短Tomcat启动时间,添加 java.security.egd 的系统属性指向 /dev/urandom 作为ENTRYPOINT
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/reggie_take_out.jar"]

4。修改原来存放图片的地址:

reggie:
  #原来的图片存放地址
  #path: D:/Project/IdeaProjects/reggie_take_out/src/main/resources/backend/images/image/
  #docker中存放图片的地址
  path: /images/

5。项目打包,建议先将原来的target文件夹删除之后再打包,然后建立镜像

 6。在docker中创建mysql容器

docker pull mysql  //拉取mysql镜像,默认拉取最新的版本

docker run -it --rm --name mysql8 -e MYSQL_ROOT_PASSWORD=aaaa -p 3303:3306 -d mysql --lower_case_table_names=1  //生成mysql容器,设置容器名,设置密码,设置映射

这里有一个坑,加上--rm后一旦stop容器,容器就会直接没了,但不加的话容器启动后就会自动停止,找了一圈也没找到靠谱的方法

这里登录时可能会报连接不了MySQL服务器错误,退出容器重新进去,不行的话多试几次

docker exec -it mysql8 /bin/bash  //进入mysql容器

mysql -uroot -p  //登录mysql

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'aaaa';  //设置mysql远程权限

flush privileges;  //刷新权限  此时就可以在navicat中通过端口号3303连接到mysql容器了。

7。导入数据库数据

我使用的是navicat,连接端口号为生成mysql容器时设置的3303

 然后新建reggie数据库,之后运行sql文件,导入数据

 此时数据已经全部导入了

8。打开docker,查看镜像

 两个容器都已经在运行了

9。创建网桥,然后把项目容器和数据库容器连接上去。

docker network create my-bridge  //创建网桥

docker network inspect my-bridge  //查看网桥

docker network connect my-bridge mysql8 //连接数据库镜像

docker network connect my-bridge reggie //连接项目镜像

连接好之后,再查看网桥

 注意:数据库连接地址中的IP的为数据库容器在这个网桥中的IP地址,即 172.18.0.2

10。在浏览器访问管理员登录页瑞吉外卖管理端http://localhost:8081/backend/page/login/login.html

 11。登录后可以正常使用了。

该项目的gitee仓库地址:reggie_take_out: 瑞吉外卖项目案例https://gitee.com/mainworld/reggie_take_out

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值