Docker部署spring boot项目
2024-09-25 13:15:39
1.打包
将项目打jar包并传到服务器的一个文件夹中,我的是/opt/docker,注意项目中的mysql配置的IP是服务器公网的ip地址
#数据源设置
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://121.199.74.249:1008/blog?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
server.port=8888
2.在同一文件夹中编写Dockerfile
touch Dockerfile
# 基础镜像使用java
FROM java:8
EXPOSE 8888
# 作者
MAINTAINER tyy<1057286890@qq.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
#在容器中创建挂载点,可以多个
VOLUME /tmp
# 就是配置文件中的日志文件夹
VOLUME /logfile
# 将jar包添加到容器
ADD tyyblog.jar blog.jar
# 运行jar包
RUN sh -c 'touch /blog.jar '
ENTRYPOINT ["sh","-c","java -jar /blog.jar "]
3.build镜像
docker build -t blog .
现在就有名字为blog的镜像
4.需要在仓库拉一个mysql的镜像
docker pull mysql:8.0
5.先创建启动mysql的容器
docker run -p 3306:3306 --name mysql1 -v /opt/mysqldata/conf:/etc/mysql/conf.d -v /opt/docker/mysqldata/logs:/logs -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=*** -d -it mysql:8.0
修改端口号
命令说明
mysql-test: 容器名
/etc/mysql/my.cnf:容器中 my.cnf路径
/root:my.cnf在宿主机保存路径
docker cp mysql-test:/etc/mysql/my.cnf /opt/mysql
粘回去
docker cp /opt/mysql/my.cnf mysql:/etc/mysql/
docker exec -it mysql /bin/bash
意思为
#--restart=always 当docker重启时,容器也重启
# 容器终止运行后自动删除容器文件
# --rm
# 主机端口映射到容器端口
#-p 3306:3306
# 给容器起别名(非常重要,项目中的数据库地址需要和别名一致)
#--name mysql1
# 把主机的配置文件映射到容器的配置文件
#-v /opt/docker/mysqldata/conf:/etc/mysql/conf.d
# 把主机的日志映射到容器的日志
#-v /opt/docker/mysqldata/logs:/logs
# 把主机的数据映射到容器(每次重启容器不用担心数据被清空了)
#-v /var/lib/mysql:/var/lib/mysql
# 数据库密码
#-e MYSQL_ROOT_PASSWORD=root
# 后台启动
6.创建blog的镜像
docker run -itd --name blog1 -p 8888:8888 --link mysql1:blog blog
意思是
# 容器终止运行后自动删除容器文件
#--rm
# 后台启动
#-itd
# 主机端口映射到容器端口
#-p 8888:8888
# 为容器起别名
#--name blog1
# 连接提供mysql服务的容器,冒号后面是别名,别名应该和代码中的数据库地址一致(这点真的很重要)
#--link mysql1:blog
# 由哪个镜像生成的
#blog
7.就可以访问了
最新文章
- 实验二 用C语言表示进程的调度
- Java你可能不知道的事系列(1)
- 烂泥:U盘安装Centos6.5
- repcached的安装练习
- php中的日期
- MYSQL触发器的NEW和OLD的一个小问题
- incredibuild agent service is not running
- 解决只读时ios下input光标问题
- C++设计模式——中介者模式
- 软件工程实践助教每周小结 <; 福州大学 | 傅明建 >;
- 重启虚拟机后dhclient进程未运行解决办法
- Python可迭代对象中的添加和删除(add,append,pop,remove,insert)
- C语言字符串读入函数笔记
- Android中AsyncTask的使用
- 探索guava(一)——前置条件Preconditions类
- 学习windows编程 day4 之 自定义映射
- Mysql 数据库意向锁意义
- 为了显示此页面,Firefox 必须发送将重复此前动作的数据(例如搜索或者下订单)
- node版本查看管理工具
- 【洛谷】【单调栈】P1823 音乐会的等待
热门文章
- MySQL锁详细讲解
- spring boot:用dynamic-datasource-spring-boot-starter配置多数据源访问seata(seata 1.3.0 / spring boot 2.3.3)
- linux(centos8):jmeter5.3并发测试实例(参数在范围内随机取值)
- IDEA提示类注释的wrong tag警告的解决办法
- chrome浏览器中调试窗口位置修改
- 老板,来五道misc
- 校招“避雷针”——GitHub 热点速览 Vol.43
- java并发编程与多线程基础学习一
- 在VirtualBox中调整Raspbian分辨率
- Docker composer搭建Spring Cloud Alibaba 运行环境(二)