部署前提,部署路径基本上都是基于当前路径 $PWD,部署前先了解一下docker 容器挂载 docker run 指令等等
1.Linux docker 最新安装 (centos)
(1)服务器上有docker 先卸载 无则跳过
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
(2)sudo yum install -y yum-utils
(3)sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4)sudo yum install docker-ce docker-ce-cli containerd.io
(5)sudo systemctl start docker
上面步骤算是安装完成了,然后配置阿里云镜像加速服务,阿里云控制台搜索容器镜像服务找到对应的服务器操作文档 下面是centos版
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://pw73b63z.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker到后面会有容器内存磁盘占用过大问题,刚开始安装的时候就应该处理掉 ,点yes然后重启docker。
这个只适用刚刚安装的docker,如果有正在运行的容器,请先备份数据。
docker system prune -a
systemctl restart docker
docker 基本指令
# docker 开机自启
systemctl enable docker
# docker 容器开机自启
docker update --restart=always 容器id
# 从容器里面拷贝文件/目录到本地一个路径
docker cp Name:/container_path to_path
docker cp ID:/container_path to_path
# 目录到本地一个路径/从容器里面拷贝文件
docker cp to_path Name:/container_path
docker cp to_path ID:/container_path
2. docker 快速安装mysql并运行访问 安装版本8.0.26为案列
拉取镜像
docker pull mysql:8.0.26
运行指令,该指令是以当前路径为安装路径的,所以找个你喜欢的路径建一个文件夹 建议文件夹命名以 服务名_端口_版本号 例如:mysql_3306_8.0.26
然后 cd mysql_3306_8.0.26 在运行下面指令
指令按需修改
--name mysql_3306_8.0.26 服务名称不要和docker容器服务名称重复 服务名_端口_版本号一般不会重复
-p 3306:3306 -p 外网访问端口:容器内部端口,无需改变,可改-p 3307:3306 -p 3308:3306 等等
mysql:8.0.26 服务镜像名称 例如你拉的mysql版本是5.7.5 此处应该对应 mysql:5.7.5
不明白可以百度学习一下docker容器挂载 mysql访问密码是123456
docker run --name mysql_3306_8.0.26 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql:8.0.26
8.0以上数据库得加一点配置,比如分组 + 排序查询报错
在刚刚建的mysql_3306_8.0.26 目录下会有个conf目录
[root@localhost mysql_3306_8.0.26]# ls
conf data logs
[root@localhost mysql_3306_8.0.26]# cd conf
[root@localhost mysql_3306_8.0.26]# vim mysql.cnf
把下面这段复制进去 然后按 :wq! 保存
[mysqld]
max_connections= 1000
wait_timeout=3000
interactive_timeout=5000
sql_mode= STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
最后docker ps 查看mysql容器id
重启mysql容器 docker restart mysql容器id
mysql8修改密码
docker exec -it mysql容器id bash
mysql -u root -p
Enter password:
use mysql;
查询用户密码命令:mysql> select host,user,authentication_string from mysql.user;
把密码清空
update user set authentication_string='' where user='root';
修改本地root密码
ALTER user 'root'@'localhost' IDENTIFIED BY 'abcd123456';
修改远程root密码
ALTER user 'root'@'%' IDENTIFIED BY 'abcd123456'
修改完后不需要重启
mysql8 查看大小写敏感 0 大小写敏感 1 不区分大小写
show variables like 'lower_case_table_names';
docker 装的mysql是大小写敏感的,默认值是0,如果需要不区分大小写,直接修改配置是会报错的,只能在初始化的时候加上配置参数
因为docker容器独立,数据独立,可以把原来的容器直接删除,在原来目录上重新起一个容器就好了. (ps: 除非有特殊需求,否则不建议开启此项)
在docker run .....最末尾加上 --lower_case_table_names=1 这个参数,一定要在末尾!
3. docker 快速安装redis 并运行访问 安装版本最新即可
拉取镜像
docker pull redis:latest
安装指令 ,和mysql一样修改 --name 和 -p 端口即可 安装前先在任意位置创建文件夹 redis_6379
cd redis_6379 进入文件夹 然后把redis.conf 放在redis_6379根目录下 点击保存为redis.conf
redis 连接密码 redis.conf里面自行修改。编辑redis.conf 搜索 requirepass
然后运行下面指令
docker run -p 6379:6379 --name redis_6379 -v $PWD/redis.conf:/etc/redis/redis.conf -v $PWD/data:/data -d redis:latest redis-server /etc/redis/redis.conf --appendonly yes
4. docker 快速安装rabbitmq 并运行访问 安装版本最新即可
拉取镜像
docker pull rabbitmq
运行指令
docker run -d --hostname my-rabbit --name rabbitmq -p 15672:15672 -p 5672:5672 rabbitmq
启动rabbitmq_management这个插件
docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_management
安装延迟队列 延迟队列GitHub下载地址,点击跳转 可以选择任意版本下载,最好最新的
如果GitHub进不去 可以点击此处下载 此链接是我已经上传到oss的,版本3.9.0,如果能适用直接点这个链接就行
然后把插件复制到服务器任意文件内,建议统一管理docker容器内容放一个目录下
docker cp rabbitmq_delayed_message_exchange-3.9.0.ez rabbitmq:/plugins
复制进去可以到容器内看看是否复制进去
docker exec -it rabbitmq bash
root@my-rabbit:/# cd plugins
root@my-rabbit:/plugins# ls
复制进去后直接下面命令启动延迟队列插件
docker exec -it rabbitmq rabbitmq-plugins enable rabbitmq_delayed_message_exchange
5. docker 快速安装nginx 并运行访问 安装版本最新即可
拉取镜像
docker pull nginx
安装指令 nginx 下载包 --> nginx配置文件下载
静态文件挂载到/var/www 下的 如需要
创建文件夹
mkdir /usr/local/nginx
进入nginx文件夹上一层
cd /usr/local
nginx文件解压出来,把里面的东西全部上传到 /usr/local/nginx下 下载包自行下载
基础nginx挂载
docker run -d -p 80:80 --name nginx -v /var/www:/usr/share/nginx/html -v $PWD/nginx:/etc/nginx -v $PWD/nginx/logs:/var/log/nginx nginx
如果有SSL证书需要,下面是证书配置
docker 做了文件挂载,把证书丢到 nginx/conf.d 目录下就行
有ssl证书,80端口不要写任何端口映射了,全部写在 443 端口下,80做了强制转发到443端口
云服务器记得开放 80 和 443 端口
docker run -d -p 80:80 -p 443:443 --name nginx -v /var/www:/usr/share/nginx/html -v $PWD/nginx:/etc/nginx -v $PWD/nginx/logs:/var/log/nginx nginx
server {
listen [::]:80 default_server;
listen 80 default_server;
server_name 你的域名(www.xxx.com);
include /etc/nginx/default.d/*.conf;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
server_name 你的域名(www.xxx.com);
root /usr/share/nginx/html;
# 下面两个是你的证书绝对路径,因为有文件挂载,路径写死就行,把你的证书丢到 nginx/conf.d 下,
# ****_www.xxx.com 这个改成你自己的域名证书名字
ssl_certificate /etc/nginx/conf.d/****_www.xxx.com.pem;
ssl_certificate_key /etc/nginx/conf.d/****_www.xxx.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:1m;
fastcgi_param HTTPS on;
fastcgi_param HTTP_SCHEME https;
include /etc/nginx/default.d/*.conf;
location / {
add_header 'Access-Control-Allow-Origin' '*';
root /usr/share/nginx/html/;
index index.html;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
6. Linux快速安装jdk环境
jdk下载 --> Linux 1.8 jdk点击下载
1、mkdir /usr/java
2、然后将下载好的jdk通过winscp/xshell上传到文件夹中
3、进入文件夹 cd /usr/java
tar -zxvf jdk-8u281-linux-x64.tar.gz
mv jdk1.8.0_281 jdk
vim /etc/profile
export JAVA_HOME=/usr/java/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
source /etc/profile
java -version
7. docker 快速安装elacticsearch 并运行访问 版本根据自己需求更改 以7.9.3版本为例
拉取镜像
docker pull elasticsearch:7.9.3
创建同步网络
docker network create somenetwork
在启动es前 先把elacticsearch 下的 data 挂载目录设置读写权限,否则无法启动 elasticsearch 配置文件压缩包下载
配置文件内已经集成ik分词器,只管部署即可
mkdir /usr/local/elasticsearch_9200_7.9.3
cd /usr/local/elasticsearch_9200_7.9.3
把es配置文件解压出来,里面的东西全部丢到 elasticsearch_9200_7.9.3 根目录下 配置文件自行下载
然后使用该指令 chmod 777 data
运行部署指令 ,版本更改,端口更改参考mysql
docker run -d --name elasticsearch_9200_7.9.3 --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms528m -Xmx528m" \
-v $PWD/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v $PWD/data:/usr/share/elasticsearch/data \
-v $PWD/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.9.3