Dockerfile部署jar+mysql

docker很久没看了,这篇用于本人的回顾,如果有不好的地方,欢迎大佬指出来


准备工作

1.服务器

【备注:可以自己去买华为、阿里的,很多都有学生价】

我这里用的是虚拟机

怎么创建应该都会吧,注意配置网络,ping一下主机ip或者百度试试有没有配置好

2. docker

要安装好docker,不然也没办法继续


开始部署

我们需要mysql镜像和dockerfile创建的jar包项目镜像

Mysql镜像

        1.拉取镜像

docker pull mysql:版本号

我是直接拉最新版

        2.启动Mysql镜像

docker run -d -p 13306:3306 --name mysql -v /usr/local/mysql/log:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 mysql:latest

 解释一下哈====》从左往右看

-d:后台运行

-p 13306:3306:端口映射,访问宿主机(虚拟机)的13306端口会映射到3306端口

--name mysql:定义运行出来的容器名称为mysql,可以自定义

-------------------------------------------------------------------------------------------------------------------------

-v:指定路径挂载

-v /usr/local/mysql/log:/var/log/mysql:把容器的/var/log/mysql目录挂载到宿主机/usr/local/mysql/log下,进行保存mysql的日志

so  

-v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d也是一样挂载

-------------------------------------------------------------------------------------------------------------------------

-e MYSQL_ROOT_PASSWORD=123456:设置密码

mysql:latest:镜像名和版本

         3.检查

3.1用docker ps查看一下是否运行起来了容器,下面是成功的

 3.2用navicat(也可以是其他的数据库管理工具)

例如我这样的

可以直接把需要的sql文件运行进去,管理数据库

项目镜像

1.创建dockerfile文件夹

在/usr/local下创建一个dockerfile文件夹(也可以在/home下面,看自己,没什么特定的)

centos7创建文件夹命令是mkdir 文件夹名称

【名字可以自己自定义,那这个文件夹我们需要放点什么东西???】

2.生成项目jar包

3.编写dockerfile文件

在dockefile文件夹内编写

3.1 运行下面这个代码

vim dockerfile

3.2 编写

这个是我写的,当然啦,dockerfile里面很多参数的【注意:基础镜像要拉取一下】

我先解释一下我的这个


FROM darecosystem/alpine-jdk8:latest

darecosystem/alpine-jdk8是使用的基础镜像,这里需要去拉取自己要的基础镜这里面包含了openjdk:8所以我就直接用了。latest是版本


COPY *.jar /app.jar

COPY jar包路径 容器内jar包

*.jar表示同一目录下的任意.jar文件

/app.jar是容器内的jar包


CMD ["--server.port=8082"]
CMD:指定这个容器启动的时候要运行的命令

"--server.port=8082":设置的是启动jar包项目应用并指定端口号为 8082


EXPOSE 8082

需要暴露端口8082配置


ENTRYPOINT ["java","-jar","app.jar"]

ENTRYPOINT:指定这个容器启动的时候要运行的命令,可以追加命令

这里表示使用java运行app.jar文件

还有很多指令,我这里贴一个

FROM        # from:基础镜像,一切从这里开始构建
MAINTAINER      # maintainer:镜像是谁写的
RUN         # run:镜像构建的时候需要运行的命令
ADD         # add:步骤,tomcat镜像,这个tomcat压缩包!添加内容 添加同目录
VOLUME        # volume:挂载的目录
EXPOSE        # expose:需要暴露端口配置
CMD         # cmd:指定这个容器启动的时候要运行的命令,当cmd和ENTRYPOINT同时存在是,cmd将会被当做参数传递给ENTRYPOINT
ENTRYPOINT      # entrypoint:指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD       # onbuild:当构建一个被继承DockerFile这个时候就会运行onbuild的指令,触发指令
COPY        # copy:类似ADD,将我们文件拷贝到镜像中
ENV         # env:构建的时候设置环境变量!

4.整合

把东西丢到dockerfile文件夹

把jar包和dockerfile都放同一文件夹,我是这样习惯,你们可以看自己喜好

5.dockerfile构建项目镜像

执行

 docker build -f /usr/local/dockerfile/dockerfile -t mydemo:1.0 .

解释:

build:构建指令 

-f:指定dockerfile文件路径

-t:指定名称 

6.构建OK了

展示一下需要的三个镜像

7.启动

执行

docker run -d -p 1111:8082 --name=mydemoserve mydemo:1.0

-d:后台运行

-p :端口映射 宿主机1111映射到容器的8082端口

--name:容器名

8.检查

用docker ps检查一下

那这样就OK了

注意:

可以用curl测试一下

curl http://宿主机IP:项目端口(这里是1111)/地址

如:curl http://192.168.2.204:1111/shop

BUG解决

【我在其中的过程也遇到过bug,当然这样也要记录一下】

1.我的java代码内的数据库配置怎么写呢???

我开始写的是localhost和127.0.0.1,但是其实是有问题的,因为这是一个容器在访问另外一个容器,会发送跨容器的问题

可以用nginx试试

这里也有一个取巧的办法,就是直接把宿主机ip写进去,端口也是这个端口

  • 18
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用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的配置,更加方便和灵活。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值