腾讯云(CentOS7)使用Docker部署JeecgBoot

参考文章:

  1. 官方文档
  2. linux (CentOS7+)安装docker 部署jeecgBoot项目
  3. CentOS7 使用docker 安装redis

安装docker

由于我用的腾讯云,自带docker镜像,这部分就不细说了

  1. 更新yum
    yum update
  2. 安装下载工具
    yum install -y yum-utils
  3. 更新yum缓存
    yum makecache
  4. 安装docker
    yum install docker-ce docker-ce-cli containerd.io -y
  5. 检验是否下载成功
    docker -version
    出现版本号表示安装成功

下载镜像

  1. 启动docker
    systemctl start docker
    在这里插入图片描述

  2. 下载镜像

#从Docker Hub下载镜像
docker pull mysql:5.7#指定版本
docker pull java
docker pull redis
docker pull nginx
  1. 查看docker容器镜像
#列出本地镜像
docker images

腾讯云(CentOS7)使用Docker部署JeecgBoot_第1张图片

部署后端

启动MySQL

  1. 将密码设置为root,并且设置忽略大小写
#使用mysql镜像创建以后台模式启动一个容器,容器命名为mysql,指定将容器的3306端口映射到主机的3306端口,设置环境变量:密码为root,忽略大小写
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql --lower_case_table_names=1
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v:	绑定一个卷
  1. 进入容器
#列出所有创建的容器信息,找到对应镜像的ID
docker ps -a
docker ps [OPTIONS]
OPTIONS说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。

在这里插入图片描述

#进入容器
docker exec -it 对应的ID号 /bin/bash

在这里插入图片描述

docker exec [OPTIONS] CONTAINER COMMAND[ARG...]
OPTIONS说明:
-d :分离模式,在后台运行
-i :打开标准输入接受用户输入命令
-t :分配一个伪终端
  1. 测试
#mysql -u 用户名 -p 密码
#密码如果直接明文写在这条命令行上,有些不方便(怕被别人看到),可以输入命令后回车,此时提示你输入密码,这时候输入的密码就不再是明文的了
mysql -u root -p

之后输入密码
腾讯云(CentOS7)使用Docker部署JeecgBoot_第2张图片
4. 导入sql文件
这里我用的navicat,先连接上数据库:
连接名随意写,主机名填自己服务器或虚拟机的IP地址,用户名密码是登录服务器的用户名密码
腾讯云(CentOS7)使用Docker部署JeecgBoot_第3张图片
导入项目里的sql文件
sql文件位置:jeecg-boot/db/jeecgboot-mysql-5.7.sql
腾讯云(CentOS7)使用Docker部署JeecgBoot_第4张图片

启动redis

  1. 创建安装目录
# mkdir -p可以自动创建需要的上级目录
# touch用来创建新的空文件
mkdir -p /root/redis/data /root/redis/conf
touch /root/redis/conf/redis.conf
  1. 修改配置文件
vi /root/redis/conf/redis.conf
    protected-mode no
    port 6379
    tcp-backlog 511
    requirepass uniplore
    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
  1. 运行容器
    设置密码为myredis
# --restart=always:重启docker时自动启动相关容器
# --log-opt max-size=100m :容器日志文件上限大小100m
# --log-opt max-file=2 :窗口日志文件上限个数2
# -v 主机目录:容器内目录 :将容器目录挂载到本地,文件修改只要修改本机的文件,改完会自动同步到容器里
# --appendonly yes :容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
# --requirepass myredis :设置密码为myredis
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /root/redis/conf/redis.conf:/etc/redis/redis.conf -v /root/redis/data:/data -d redis redis-server /etc/redis/redis.conf  --appendonly yes  --requirepass myredis
  1. 进入容器
    docker exec -it redis容器对应的ID号 /bin/bash
  2. 连接redis
# redis命令行工具
redis-cli
  1. 输入密码
    auth 密码

启动java

  1. 根目录下创建jar目录
cd /
mkdir jar

在这里插入图片描述
2. 将jeecgBoot的后端项目打包上传至jar文件夹
mysql及redis对应的host和用户名密码记得修改
腾讯云(CentOS7)使用Docker部署JeecgBoot_第5张图片
打包步骤:

  • prod:生产环境
  • clean:清除项目缓存
  • packge:打jar包
    腾讯云(CentOS7)使用Docker部署JeecgBoot_第6张图片
    打包后会产生:
    腾讯云(CentOS7)使用Docker部署JeecgBoot_第7张图片

上传jar包,推荐用xftp7上传文件,直接拖拽就行了
腾讯云(CentOS7)使用Docker部署JeecgBoot_第8张图片
注意:如果之后想再在本地运行,取消勾选1再点击3就行了

  1. 启动java
#启动java
#latest是docker默认给打的标签
docker run -it -p 8080:8080 -v /jar/:/usr/jar/  --name java  -d java:latest
#进入容器
docker exec -it java容器对应id /bin/bash
#切换目录
cd /usr/jar
#查看jar包在不在
ls
#启动jar
nohup java -jar jeecg-system-start-3.4.2.jar>logs.txt  &
&:该命令在后台执行
nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端程序仍然运行
nohup java -jar x.jar >logs.txt &: 不挂断运行命令,当账户退出或终端关闭时,程序仍然运行,并且输出重定向到logs.txt
  1. 查看运行状况
    新开个终端
# 监视/jar/logs.txt文件的尾部内容(默认10行,相当于添加参数 -n 10),刷新显示在屏幕上。按CTRL+C退出
tail -f /jar/logs.txt

最终出现下图说明运行成功
腾讯云(CentOS7)使用Docker部署JeecgBoot_第9张图片

部署前端

修改.env.production

换成后端服务器的ip
腾讯云(CentOS7)使用Docker部署JeecgBoot_第10张图片

打包

yarn run build
打包完成会多一个dist文件夹
腾讯云(CentOS7)使用Docker部署JeecgBoot_第11张图片

上传到/html

腾讯云(CentOS7)使用Docker部署JeecgBoot_第12张图片

在/html目录下新建nginx.conf.template

vi nginx.conf.template

user nginx;

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 6;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";

    server {
        listen       80;
        server_name  127.0.0.1;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root  /dist;
            try_files $uri $uri/ /index.html; #解决路由重定向跳转 404 页面配置
            index  index.html index.htm;
            if (!-e $request_filename) {
                rewrite ^(.*)$ /index.html?s=$1 last;
                break;
                }
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
         root   html;
        }
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

腾讯云(CentOS7)使用Docker部署JeecgBoot_第13张图片

启动nginx

docker run -it -p 3000:80 -v /html/dist/:/dist/ -v /html/nginx.conf.template:/etc/nginx/nginx.conf --name nginx -d nginx:latest

查看是否运行成功

浏览器打开:http://ip地址:3000
腾讯云(CentOS7)使用Docker部署JeecgBoot_第14张图片
如果不成功的话用docker logs nginx容器对应的id查看日志

你可能感兴趣的:(vue项目踩坑,docker,腾讯云,linux)