docker部署springboot项目并连接mysql容器

1. 先拉取mysql镜像(因为比较慢)

docker pull mysql:5.7

2. 构建要部署的项目镜像

2.1 创建一个目录

root@lr-pc:/usr/local/docker# mkdir docker-web
1. 将需要部署的jar包拷贝到此目录下: mv demo-pmsd.jar /usr/local/docker/docker-web
2. 新建一个Dockerfile文件: vim Dockerfile

Dockerfile文件内容:

# 基础镜像使用Java
FROM java:8
# 作者
MAINTAINER lr
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD demo-pmsd.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# 指定容器需要映射到主机的端口
EXPOSE 8080

2.2 执行镜像构建命令

docker image build -t demo-pmsd . // 镜像名随意,注意最后有一个点

注意:需要在Dockerfile目录下执行, .表示在当前目录,也可指定目录。
可通过 docker images查看刚刚构建的镜像

3. 开启mysql服务

3.1 首先你需要在你的ubuntu系统上装好mysql,应该都装了把,没有的伙伴可以看我这篇教程:ubuntu18.04安装mysql5.7
3.2 将你要部署项目的数据导入ubuntu的mysql(就是建数据库和导数据)
3.3 (重点)用刚刚拉取的mysql镜像启动容器
docker run -p 3306:3306 --name db -v /etc/mysql/conf:/etc/mysql/conf.d -v /usr/local/docker/mysql/logs:/logs -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d -it mysql:5.7

命令解释:

# 容器终止运行后自动删除容器文件
# --rm
# 主机端口映射到容器端口
#-p 3306:3306 
# 给容器起别名(非常重要,项目中的数据库地址需要和别名一致)
#--name db 
# 把主机的配置文件映射到容器的配置文件
#-v /etc/mysql/conf:/etc/mysql/conf.d 
# 把主机的日志映射到容器的日志
#-v /usr/local/docker/mysql/logs:/logs 
# 把主机的数据映射到容器(每次重启容器不用担心数据被清空了)
#-v /var/lib/mysql:/var/lib/mysql 
# 数据库密码
#-e MYSQL_ROOT_PASSWORD=root 
# 后台启动
#-d 
# 容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。
#-it 
# 来自哪一个镜像
#mysql:5.7

建议将此命令,写入一个可执行的文件,方便以后使用

4. 用刚生成的项目镜像启动容器

docker run --rm -d -p 8081:8080 --name demo-pmsd --link db:db demo-pmsd
命令解释:

# 容器终止运行后自动删除容器文件
#--rm
# 后台启动
#-d 
# 主机端口映射到容器端口
#-p 8081:8080 
# 为容器起别名
#--name demo-pmsd
# 连接提供mysql服务的容器,冒号后面是别名,别名应该和代码中的数据库地址一致(这点真的很重要)
#--link db:db
# 由哪个镜像生成的
#demo-pmsd

同样建议将此命令,写入一个可执行的文件,方便以后使用

5.恩,没有然后了,你可以在浏览器端访问你的项目了localhost:8081

参考:docker常用命令

使用docker部署springboot+MySQL项目,可以按照以下步骤进行操作: 1. 编写Dockerfile文件,指定基础镜像、安装JDK和MySQL等依赖,将项目打包成jar包并复制到镜像中。 ```dockerfile FROM openjdk:11-jdk-slim VOLUME /tmp ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} app.jar RUN mkdir -p /var/lib/mysql RUN apt-get update && apt-get install -y mysql-server RUN echo "bind-address = 0.0.0.0" >> /etc/mysql/mysql.conf.d/mysqld.cnf RUN service mysql start && \ mysql -uroot -e "CREATE DATABASE db_name" && \ mysql -uroot -e "CREATE USER 'username'@'%' IDENTIFIED BY 'password'" && \ mysql -uroot -e "GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'%';" EXPOSE 8080 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 2. 构建镜像 在Dockerfile的目录下执行以下命令: ```shell docker build -t springboot-mysql . ``` 这里将镜像命名为springboot-mysql。 3. 运行容器 执行以下命令运行容器: ```shell docker run -d -p 8080:8080 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=db_name -e MYSQL_USER=username -e MYSQL_PASSWORD=password springboot-mysql ``` 这里将容器的8080端口映射到主机的8080端口,3306端口映射到主机的3306端口,并指定MySQL的root密码、数据库名、用户名和密码。 4. 访问应用 在浏览器中访问http://localhost:8080,即可访问应用。 注意:如果使用docker-compose进行部署,可以在docker-compose.yml文件中指定MySQL配置,更加方便和灵活。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值