大家好,这里是千寻简笔记,我是作者星辰,笔记内容整理并发布,内容有误请指出,笔记源码已开源,前往Gitee搜索《chihiro-notes》感谢您的观看。
作者各大平台直链: GitHub | Gitee | CSDN
下文使用到的内容:
CentOS 7- 配置阿里镜像源
输入以下命令备份一下你的Ubuntu默认的源地址。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
如何寻找镜像源:清华大学开源软件镜像站,找到Ubuntu,点击它旁边的问号。
修改Ubuntu的版本,选择你自己的版本。
这里在提供一些源的地址
阿里源:
#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
中科大源:
#中科大源
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
163源:
#163源
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe mul
安装vim
sudo apt install vim
打开你的默认的源的文件
sudo vim /etc/apt/sources.list
把这个内容全删了
# 删除命令在命令模式下,输入
:.,$d
在清华找到的源地址复制粘贴到这里(或者是上面发的其他源地址拿过来)。复制完:ESC–>:wq 保存关闭。
# 清华镜像
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# 阿里云镜像
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
更新一下
sudo apt-get update
sudo apt update
# 更新好久
sudo apt upgrade
输入命令安装yum即可。
sudo apt-get install yum
教程:https://segmentfault.com/a/1190000041265342
安装Docker命令
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun && systemctl start docker && systemctl enable docker
由于我的ubuntu是最小安装,所以需要安装curl,安装完成之后在执行一次步骤一。
sudo apt install curl
查看docker版本
root@Chihiro:/etc/docker# docker version
Client: Docker Engine - Community
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:02:57 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:01:03 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
如果你机器是国内的机器,那么需要配置镜像加速,一般使用阿里云镜像加速 阿里云加速官网,选择自己的系统。
这里使用的是 mariadb 镜像,并且将 mariadb 数据库文件挂载到宿主机的 /home/mysql/
目录下
docker run -v /home/mysql/:/var/lib/mysql \
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 \
--privileged=true --restart=always --name mariadb -d mariadb
docker run -itd --name redis --restart=always -p 6379:6379 redis
# 仅供参考,不做配置
docker run --name myredis -p 6379:6379 -d redis redis-server --appendonly yes
docker run表示运行的意思
#--name myredis 表示起个名字叫myredis
# -p 6379:6379表示把服务器的6379映射到docker的6379端口,这样就可以通过服务器的端口访问docker的端口
# -d 表示以后台服务形式运行redis
# redis redis-server --appendonly yes表示开启持久化缓存模式,可以存到硬盘
#进入redis容器
docker exec -it redis的id /bin/bash
redis-cli
#设置密码
config set requirepass ***
#验证密码
提示
- /home/nginx/conf.d 用于存放配置文件
- /home/nginx/cert 用于存放 https 证书
- /home/nginx/html 用于存放网页文件
- /home/nginx/logs 用于存放日志
首先在 /home/nginx
目录创建 nginx.conf 文件,不然安装 Nginx 会报错。
# 先新建文件夹,在新建文件
sudo mkdir /home/nginx/
cd /home/nginx/
sudo touch nginx.conf
使用编辑器编辑:vim /home/nginx/nginx.conf
,按 i 进入插入。复制完按esc,输入 :wq
保存退出。
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
然后安装 Nginx
docker run -d \
--name nginx --restart always \
-p 80:80 -p 443:443 \
-e "TZ=Asia/Shanghai" \
-v /home/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf.d:/etc/nginx/conf.d \
-v /home/nginx/logs:/var/log/nginx \
-v /home/nginx/cert:/etc/nginx/cert \
-v /home/nginx/html:/usr/share/nginx/html \
nginx:alpine
有两种方法构建镜像
缺点:springboot的发布不易
提示
Docker 部署使用到了环境变量参数,对于非
V2.6
版本的,需要修改 application.yml、application-prod.yml 等配置。具体参考
修改完成后,打包项目将打包好地Jar上传到服务器的 /home/eladmin
目录,在该目录创建 Dockerfile 文件,并编写 Dockerfile
FROM java:8
ARG JAR_FILE=./*.jar
COPY ${JAR_FILE} app.jar
ENV TZ=Asia/Shanghai
ENTRYPOINT ["java","-jar","/app.jar"]
构建镜像
docker build -t eladmin .
创建一个存放jar包的目录。
sudo mkdir /aService/lncNet/docker
上传jar包到新创建的目录。上传的项目名:eladmin-system-2.6.jar
创建脚本文件:lncNet.sh
,在/aService/lncNet/docker
创建
# 编辑器打开,i 进入插入,esc 退出插入模式,:wq 保存
vim lncNet.sh
# 路径是映射到容器里面的,不是宿主机的路径
java -jar /usr/data/eladmin-system-2.6.jar
路径:上传jar包的路径/home/aServices/lncNet/eladmin-system-2.6.jar
添加sh文件执行去权限
chmod +x lncNet.sh
创建Dockerfile
/aService/lncNet/docker/
目录,在该目录创建 Dockerfile 文件,并编写 Dockerfile
vim /aService/lncNet/docker/Dockerfile
FROM java:8
ENV TZ=Asia/Shanghai
# 路径是映射到容器里面的,不是宿主机的路径
CMD ["sh","-c","/usr/data/lncNet.sh"]
构建镜像:存储库名称必须为小写
docker build -t lncnet .
方法一跟官方文档一样,就不写了。
将容器中的 /home/lncnet/
挂载到宿主机的 /aService/lncNet/data
目录并且设置数据库地址与密码等环境变量参数
Star(作者):
-d
`参数时,容器启动后会进入后台。-i
参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。-i
-t
参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。--name lncnet
镜像名称-p 8111:8111
端口号mkdir /home/aServices/lncNet/data/
/aService/lncNet/data
宿主机目录/home/lncnet/
容器目录172.17.0.1
docker 0 的ip,liunx查看ip ifconfig
lncnet
镜像名称# spring.profiles.active=prod 指定生产环境
docker run -dit \
--name lncnet --restart always \
-p 8111:8111 \
-e "TZ=Asia/Shanghai" \
-e spring.profiles.active=prod \
-e DB_HOST=172.17.0.1 \
-e DB_PORT=3306 \
-e DB_USER=root \
-e DB_PWD=123456 \
-e REDIS_HOST=172.17.0.1 \
-e REDIS_PORT=6379 \
-v /aService/lncNet/docker/:/usr/data/ \
-v /aService/lncNet/data/:/home/lncnet/ \
lncnet
/aService/lncNet/docker
替换改目录jar包,重启容器
# 停止容器
docker stop 容器名称
# 开启容器
docker start 容器名称
# 重启容器
docker restart 容器名称
这里使用 Nginx 反向代理访问后端服务,由于容器内部通信,因此需要使用容器的 IP,也就是 172.17.0.1
,是docker0的地址。
在 /home/nginx/conf.d
创建一个 lncnet.conf 的配置文件,文件内容如下
sudo vim /home/nginx/conf.d/lncnet.conf
server
{
listen 80;
server_name 192.168.3.198; #域名/外网IP
index index.html;
root /usr/share/nginx/html/lncNet/dist; #dist上传的路径
# 避免访问出现 404 错误
location / {
try_files $uri $uri/ @router;
index index.html;
}
location @router {
rewrite ^.*$ /index.html last;
}
# 接口
location /api {
proxy_pass http://172.17.0.1:8111; # 后端端口地址,需要自行修改
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# 授权接口
location /auth {
proxy_pass http://172.17.0.1:8111;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# WebSocket 服务
location /webSocket {
proxy_redirect off;
proxy_pass http://172.17.0.1:8111/webSocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60s;
proxy_read_timeout 86400s;
proxy_send_timeout 60s;
}
# 头像
location /avatar {
proxy_pass http://172.17.0.1:8111;
}
# 文件
location /file {
proxy_pass http://172.17.0.1:8111;
}
}
注意:容器中 /usr/share/nginx/html/lncNet/dist
对应宿主机的 /home/nginx/html/lncNet/dist
目录,因此文件上传到宿主机的目录即可
由于Nginx使用的是反向代理后端接口,因此 非 V2.6 版本需要做如下修改
1、将 .env.production
中的接口地址改为 '/'
2、修改 api.js
中的 baseUrl = process.env.VUE_APP_BASE_API === '/' ? '' : process.env.VUE_APP_BASE_API
3、打包项目并且上传到 /home/nginx/html/lncNet
目录下
4、重启 Nginx 容器 docker restart nginx
docker stop 容器名
docker rm 容器ID # 删除指定的容器,不能删除正在运行的容器,如果要强制删除rm -f
docker rm -f $(docker ps -aq) # 删除所有的容器
docker ps -a -q|xargs docker rm # 删除所有的容器
docker rmi -f 镜像ID #根据ID删除指定镜像
docker rmi -f 镜像ID 镜像ID 镜像ID #删除多个镜像
docker rmi -f $(docker images -aq) #删除所有镜像
docker ps -a # 查看所有容器
exec
命令
-i
-t
参数
docker exec
后边可以跟多个参数,这里主要说明-i
-t
参数。只用
-i
参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。当
-i
-t
参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。
$ docker run -dit ubuntu
69d137adef7a8a689cbcb059e94da5489d3cddd240ff675c640c8d96e84fe1f6
$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
69d137adef7a ubuntu:latest "/bin/bash" 18 seconds ago Up 17 seconds zealous_swirles
$ docker exec -i 69d1 bash
ls
bin
boot
dev
...
$ docker exec -it 69d1 bash
root@69d137adef7a:/#
chown更改文件或目录的所有者,注意:所有者,必须存在于(/etc/passwd)下。
chown -R 用户名 文件名
现在立即关机
sudo shutdown -h now