Linux 开发生产环境 借助docker快速部署

部署前提,部署路径基本上都是基于当前路径 $PWD,部署前先了解一下docker 容器挂载 docker run 指令等等

作者邮箱 1774825549@qq.com

qq 1774825549

   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磁盘占用过大

 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值