JAVA项目在Linux环境下的部署(基于Docker容器)

JAVA项目在Linux环境下的部署(基于Docker容器)

本文主要以图文的形式讲解项目在Linux环境下的部署,涉及在Docker容器中安装MySQL、Redis、Nginx以及SpringBoot应用部署,基于CenterOS 8。

Docker环境安装

  • 安装yum-utils:
yum install -y yum-utils device-mapper-persistent-data lvm2
  • 为yum源添加docker仓库位置:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安装docker:
yum install docker-ce
  • 启动docker:
systemctl start docker

JAVA环境安装

docker pull java:8

MySQL安装

  • 下载MySQL5.7的docker镜像:
docker pull mysql:5.7
  • 使用如下命令启动MySQL服务:
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
  • 参数说明
    • -p 3306:3306:将容器的3306端口映射到主机的3306端口
    • -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂在到主机
    • -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
    • -v /mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机
    • -e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码(密码可自定义更改)
    • -i 以交互模式运行容器,通常与 -t 同时使用;
    • -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    • -d 后台运行容器,并返回容器ID;
    • –restart=always 挂掉自动重启
  • 进入运行MySQL的docker容器:
docker exec -it mysql /bin/bash
  • 使用MySQL命令打开客户端:
mysql -uroot -proot --default-character-set=utf8mb4
  • 创建 yylq_ds 数据库:
create database yylq_ds character set utf8mb4 COLLATE = utf8mb4_unicode_ci;
  • 将yylq_ds.sql上传到Linux服务器上并拷贝到mysql容器的/目录下:
docker cp /mydata/yylq_ds.sql mysql:/
  • 将sql文件导入到数据库:
use yylq_ds;
source /yylq_ds.sql;
附 MySQL 5.7 root 用户密码修改
#在MySQL 5.7 password字段已从mysql.user表中删除,新的字段名是“authenticalion_string”.

#选择数据库:
use mysql;

#更新root的密码:
update user set authentication_string=password('新密码') where user='root' and Host='localhost';

#刷新权限:
flush privileges;

Redis安装

  • 下载Redis6.0的docker镜像:
docker pull redis:6
  • 使用如下命令启动Redis服务:
docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-d redis:6 redis-server --appendonly yes
  • 可以进入Redis容器使用redis-cli命令进行连接:
docker exec -it redis redis-cli

Nginx安装

  • 下载Nginx1.14.1的docker镜像:
docker pull nginx:1.14.1
  • 先运行一次容器(为了拷贝配置文件):
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-d nginx:1.14.1
  • 将容器内的配置文件拷贝到指定目录:
docker container cp nginx:/etc/nginx /mydata/nginx/
  • 修改文件名称:
cd /mydata/nginx/
mv nginx conf
  • 终止并删除容器:
docker stop nginx
docker rm nginx
  • 使用如下命令启动Nginx服务:
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.14.1

Docker全部环境安装完成

  • 所有下载镜像文件:
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
redis                 6                   071538dbbd71        2 weeks ago         113MB
mysql                 5.7                 7faa3c53e6d6        15 months ago       448MB
nginx                 1.14.1              0346349a1a64        3 years ago         109MB
java                  8                   d23bdf5b1b1b        5 years ago         643MB
  • 所有运行在容器里面的应用:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-41eyLKr1-1644476688349)(C:\Users\admin\AppData\Roaming\Typora\typora-user-images\image-20220209160643495.png)]

SpringBoot应用部署

1、把服务打包成jar包
2、创建Dockerfile文件,文件名为Dockerfile,没有扩展名
# 设置本镜像需要使用的基础镜像

FROM  java:8  

# 把jar包添加到镜像中

ADD yylq-ds.jar /app.jar

# 镜像暴露的端口

EXPOSE 8199

RUN bash -c 'touch /app.jar'

# 容器启动命令

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

# 设置时区

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
3、把jar包和Dockerfile放在linux服务器的同一个目录中

在这里插入图片描述

4、构建docker镜像
docker build -t yylq-ds-server:v1.0 .

#yylq-ds-server为镜像名称  v1.0是镜像版本  命令的最后有个“.” 表示在当前目录下面寻找 Dockerfile 文件

在这里插入图片描述

5、查看镜像
docker images
6、启动
docker run -p 8199:8199 --name yylq-ds-server \
-v /mydata/yylq-ds-server/html:/usr/share/yylq-ds-server/html \
-v /mydata/yylq-ds-server/logs:/var/log/yylq-ds-server  \
-d yylq-ds-server:v1.0
7、查看镜像
docker ps -a

在这里插入图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一种虚拟化技术,可以将应用程序及其依赖项打包到一个容器中,使得应用程序在不同的环境中可以稳定运行。下面是在Docker容器部署Java项目的步骤: 1. 安装Docker:在Linux系统中,使用以下命令安装Docker: ```bash sudo apt-get update sudo apt-get install docker.io ``` 2. 创建Dockerfile:在Java项目的根目录下创建一个名为Dockerfile的文件,用于构建Docker镜像。Dockerfile的内容如下: ```dockerfile FROM openjdk:8-jdk-alpine COPY . /usr/src/myapp WORKDIR /usr/src/myapp RUN javac Main.java CMD ["java", "Main"] ``` 该Dockerfile使用openjdk:8-jdk-alpine作为基础镜像,将Java项目的源代码拷贝到/usr/src/myapp目录下,并在该目录下编译Main.java文件。最后,使用CMD命令运行Main类。 3. 构建Docker镜像:使用以下命令在Java项目的根目录下构建Docker镜像: ```bash sudo docker build -t myapp . ``` 其中,-t参数指定镜像名称为myapp,后面的.表示Dockerfile所在的目录。 4. 运行Docker容器:使用以下命令在Docker容器中运行Java应用程序: ```bash sudo docker run -it --rm myapp ``` 其中,-it参数表示以交互模式运行容器,--rm参数表示容器退出时自动删除,myapp是之前构建的镜像名称。 5. 测试Java应用程序:在容器中运行Java应用程序后,可以使用以下命令测试: ```bash curl http://localhost:8080 ``` 如果一切正常,应该会看到Java应用程序输出的信息。 注意:在构建Docker镜像时,需要将Java项目的依赖项打包到jar文件中,并将该jar文件拷贝到容器中。如果Java应用程序需要连接数据库等服务,则需要在Docker容器中安装相应的驱动程序和服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值