开发者

Docker DockerFile部署java jar项目包及Mysql和Redis的详细过程

目录
  • 1. docker安装
    • 1.1 搭建gcc环境 (gcc是编程语言译器)
    • 1.2 安装需要的软件包
    • 1.3 装镜像仓库
    • 1.4 新yum软件包索引
    • 1.5 安装docker引擎
    • 1.6 启动docker
    • 1.7 查看docker版本
    • 1.8 配置阿里云镜像加速
  • 2. docker安装mysql
    • 2.1 拉取mysql镜像
    • 2.2 启动mysql
    • 2.3 查看容器
  • 3. docker部署Redis
    • 3.1 拉取redis镜像
    • 3.2 创建配置文件
    • 3.3 执行以下命令启动容器
  • 4. docker部署Java jar
    • 4.1 将jar上传到需要构建镜像的目录
    • 4.2 在当前目录下创建Dockerfile编写Dockerfile (最好命名Dockerfile,否则构建需要指定文件名)
    • 4.3 构建镜像 (需要在Dockerfile同级目录下构建,执行次命令)
    • 4.4 构建成功后查看当前的镜像, 构建过程中如果没有拉取过openjdk:8-jdk-alpine,需要等待下载
    • 4.5 启动后端项目镜像
    • 4.6 查看容器是否启动成功
    • 4.7 如果容器没有启动成功, 请看这一步
  • 总结

    Docker运行环境要求系统为64位、linux系统内核版本为 3.8以上

    1. Docker安装

    1.1 搭建gcc环境 (gcc是编程语言译器)

    yum -y install gccjs
    yum -y install gcc-c++

    1.2 安装需要的软件包

    yum install -y yum-utils

    1.3 装镜像仓库

    因为docker的服务器是在国外,

    所以有时候从仓库中下载镜像的时候会连接被拒绝或者连接超时的情况!

    因此可以使用阿里云镜像仓库

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/Centos/docker-ce.repo

    1.4 新yum软件包索引

     yum makecache fast

    1.5 安装docker引擎

    yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

    1.6 启动doandroidcker

    systemctl start docker

    1.7 查看docker版本

    docker version

    Docker DockerFile部署java jar项目包及Mysql和Redis的详细过程

    1.8 配置阿里云镜像加速

    Docker DockerFile部署java jar项目包及Mysql和Redis的详细过程

    Docker DockerFile部署java jar项目包及Mysql和Redis的详细过程

     在CentOS下配置镜像加速器

    mkdir -p /etc/docker 
    tee /etc/docker/daemon.json <<-'EOF'
    {<!--{C}%3C!%2D%2D%20%2D%2D%3E-->
      "registry-mirrors": ["你个人的阿里云镜像加速器地址"]
    }
    EOF
    systemctl daemon-reload
    systemctl restart docker 

     docker已经安装完毕

    2. docker安装Mysql

    2.1 拉取mysql镜像

    docker pull mysql:8.0.19

    2.2 启动mysql

     # docker run 创建一个新的容器
    docker run -d -p 23306:3306 --name mysql \
    -v /usr/dcoker-mysql/log:/var/log/mysql \
    -v /usr/docker-mysql/data:/var/lib/mysql \
    -v /usr/dockerAGiyDhiPk-mysql/conf:/etc/mysql/conf.d \
    -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.19

    命令参数说明:

    参数说明:

    • -d   后台运行
    • -p 33060:3306  端口映射,宿主机的33060端口映射到容器3306端口
    • --name mysql  容器名称,可以自定义
    • -v /usr/dcoker-mysql/log:/var/log/mysql  宿主机/usr/dcoker-mysql/log目录与容器的/var/log/mysql目录挂载,该目录保存了mysql的日志
    • -v /usr/docker-mysql/data:/var/lib/mysql  也是挂载,该目录是mysql数据储存的位置
    • -v /usr/docker-mysql/conf:/etc/mysql/conf.d  也是挂载,该目录放置配置文件的
    • -e MYSQL_ROOT_PASSWORD=123456  设置环境变量,该变量是设置root用户的密码,可自行修改
    • mysql:8.0.19  镜像名称以及tag

    如果不挂载数据卷,容器被删掉之后,mysql数据库里面的数据都会消失 

    如果启动失败,可以执行docker logs -f -t --tail 1000  [容器id] ,查看日志,找失败的原因

    2.3 查看容器

    docker ps 

    Docker DockerFile部署java jar项目包及Mysql和Redis的详细过程

     进入容器执行

    # docker exec 在运行的容器中执行命令
    docker exec -it mysql mysql -uroot -p123456

    参数说明: -i 以交互模式运行容器 -t 为容器重新分配一个伪输入终端 mysql -uroot -p123456 容器执行的命令,直接进入容器中的mysql 

    *注意:安装的mysql是8.x版本的,默认的身份验证插件为caching_sha2_password,该插件不能使用旧版本的客户端来连接;如果所使用的Navicat版本较旧,需要修改身份验证插件才能登录。修改插件执行:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

    使用navicat连接后创建数表并插入数据, 如果出现乱码, 修改配置文件

    执行exit退出容器, 在宿主机中挂载的配置文件编写

    执行 vim /usr/docker-mysql/conf/my.cnf, 这个目录就是上面创建容器时挂载的数据卷

    Docker DockerFile部署java jar项目包及Mysql和Redis的详细过程

    [client]
    default_character_set=utf8
    [mysqld]
    collation_server=utf8_general_ci
    character_set_server=utf8

     保存之后执行docker restart mysql重启容器

    3. docker部署redis

    3.1 拉取redis镜像

    docker pull redis:6.0.8

    3.2 创建配置文件

    在宿主机上创建一个文件redis.conf, 路径可以自定义, 这里提供一个配置文档, 配置可根据自己的需求修改, 本文配置文件路径: /usr/docker-redis/conf/reids.conf

    # bind 127.0.0.1
    protected-mode no
    port 6379
    tcp-backlog 511
    #设置密码为123456,可注释掉
    requirepass 123456
    timeout 0
    tcp-keepalive 300
    daemonize no
    supervised no
    pidfile /var/run/redis_6379.pid
    loglevel notice
    logfile ""
    databases 30
    always-show-logo yes
    save 900 1
    save 300 10
    save 60 10000
    stop-writes-on-bgsave-error yes
    rdbcompression yes
    rdbchecksum yes
    dbfilename dump.rdb
    dir ./
    replica-serve-stale-data yes
    replica-read-only yes
    repl-diskless-sync no
    repl-disable-tcp-nodelay no
    replica-priority 100
    lazyfree-lazy-eviction no
    lazyfree-lazy-expire no
    lazyfree-lazy-server-del no
    replica-lazy-flush no
    appendonly yes
    appendfilename "appendonly.aof"
    no-appendfsync-on-rewrite no
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    aof-load-truncated yes
    aof-use-rdb-preamble yes
    Lua-time-limit 5000
    slowlog-max-len 128
    notify-keyspace-events ""
    hash-max-ziplist-entries 512
    hash-max-ziplist-value 64
    list-max-ziplist-size -2
    list-compress-depth 0
    set-max-intset-entries 512
    zset-max-ziplist-entries 128
    zset-max-ziplist-value 64
    hll-sparse-max-bytes 3000
    stream-node-max-bytes 4096
    stream-node-max-entries 100
    activerehashing yes
    hz 10
    dynamic-hz yes
    aof-rewrite-incremental-fsync yes
    rdb-save-incremental-fsync yes

    * 注意:daemonize no是关闭守护线程,如果开启的话容器会启动不起来 

    根据个人需求进行配置 

    3.3 执行以下命令启动容器

    docker run -d -p 6379:6379 --name redis \
    -v /usr/docker-redis/conf/redis.conf:/etc/redis/redis.conf \
    -v /usr/docker-redis/data:/data \
    redis redis-server /etc/redis/redis.conf

    参数说明:

    • -d   后台运行
    • -p 6379:6379  端口映射,<宿主机端口>:<容器端口>
    • --name redis   容器名称,可以自定义
    • -v /usr/docker-redis/conf/redis.conf:/etc/redis/redis.conf  编程客栈宿主机/usr/docker-redis/conf/redis.conf文件与容器的/etc/redis/redis.conf文件挂载
    • -v /usr/docker-redis/data:/data  也是挂载,该目录是redis数据持久化文件储存的位置
    • redis    镜像名称
    • redis-server /etc/redis/redis.conf   以上面redis.conf文件写的配置启动redis

    启动redis容器之后,执行docker ps查看是否启动成功

    如果没有启动成功可以执行命令docker logs <容器名称或id>查看日志;如果日志没有内容可能是配置中开启了守护线程的原因,关闭即可

    启动成功后,执行docker exjsec -it redis redis-cli命令进入容器

    如果设置了密码,执行auth 123456(123456配置中的密码,没有配置密码的直接跳过这步)

    Docker DockerFile部署java jar项目包及Mysql和Redis的详细过程

     到这里redis就安装完成了

    4. docker部署java jar

    4.1 将jar上传到需要构建镜像的目录

    4.2 在当前目录下创建Dockerfile编写Dockerfile (最好命名Dockerfile,否则构建需要指定文件名)

    #基础镜像使用jdk1.8
    FROM openjdk:8-jdk-alpine
    #作者
    MAINTAINER pan
    # VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
    VOLUME /tmp
    # 将jar包添加到容器中并更名
    ADD ruoyi-admin.jar app.jar
    # 运行jar包
    RUN bash -c 'touch /app.jar'
    # 为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
    #ENTRYPOINT ["nohup","java","-jar","/data/app/ruoyi-admin.jar","&"]
    #暴露8080端口
    EXPOSE 8080

    4.3 构建镜像 (需要在Dockerfile同级目录下构建,执行次命令)

    docker build -t app:1.0 .    # 注意末尾的点不能去掉

    4.4 构建成功后查看当前的镜像, 构建过程中如果没有拉取过openjdk:8-jdk-alpine,需要等待下载

    docker images

    4.5 启动后端项目镜像

     docker run -d --name app-container -p 8080:8080 app:1.0

    4.6 查看容器是否启动成功

    docker ps , 如果成功过则代表后端部署完成

    Docker DockerFile部署java jar项目包及Mysql和Redis的详细过程

    可以访问进一步验证

    Docker DockerFile部署java jar项目包及Mysql和Redis的详细过程

    后端部署完成

    4.7 如果容器没有启动成功, 请看这一步

    查看容器的日志

    docker logs -f -t --tail 1000 [容器ID]

     通过日志确定问题,将报错进行复制,进行百度搜索,自行解决 

    总结

    到此这篇关于Docker DockerFile部署java jar项目包及Mysql和Redis的文章就介绍到这了,更多相关Docker DockerFile部署jar项目包内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜