参考文章:
由于我用的腾讯云,自带docker镜像,这部分就不细说了
yum update
yum install -y yum-utils
yum makecache
yum install docker-ce docker-ce-cli containerd.io -y
docker -version
#从Docker Hub下载镜像
docker pull mysql:5.7#指定版本
docker pull java
docker pull redis
docker pull nginx
#列出本地镜像
docker images
#使用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: 绑定一个卷
#列出所有创建的容器信息,找到对应镜像的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 :分配一个伪终端
#mysql -u 用户名 -p 密码
#密码如果直接明文写在这条命令行上,有些不方便(怕被别人看到),可以输入命令后回车,此时提示你输入密码,这时候输入的密码就不再是明文的了
mysql -u root -p
之后输入密码
4. 导入sql文件
这里我用的navicat,先连接上数据库:
连接名随意写,主机名填自己服务器或虚拟机的IP地址,用户名密码是登录服务器的用户名密码
导入项目里的sql文件
sql文件位置:jeecg-boot/db/jeecgboot-mysql-5.7.sql
# mkdir -p可以自动创建需要的上级目录
# touch用来创建新的空文件
mkdir -p /root/redis/data /root/redis/conf
touch /root/redis/conf/redis.conf
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
# --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
docker exec -it redis容器对应的ID号 /bin/bash
# redis命令行工具
redis-cli
auth 密码
cd /
mkdir jar
2. 将jeecgBoot的后端项目打包上传至jar文件夹
mysql及redis对应的host和用户名密码记得修改
打包步骤:
上传jar包,推荐用xftp7上传文件,直接拖拽就行了
注意:如果之后想再在本地运行,取消勾选1再点击3就行了
#启动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
# 监视/jar/logs.txt文件的尾部内容(默认10行,相当于添加参数 -n 10),刷新显示在屏幕上。按CTRL+C退出
tail -f /jar/logs.txt
yarn run build
打包完成会多一个dist文件夹
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;
# }
#}
docker run -it -p 3000:80 -v /html/dist/:/dist/ -v /html/nginx.conf.template:/etc/nginx/nginx.conf --name nginx -d nginx:latest