docker中间件部署超详细步骤
作者:java资料站
docker是现在很火的一项容器技术,能够帮助来部署我们来快速部署各类环境,这篇文章主要介绍了docker中间件部署的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
1.docker安装
# 1.卸载旧版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 2.需要的安装包 yum install -y yum-utils # 3.设置镜像的仓库 # 3.1.默认是国外的,不推荐 yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 3.2.推荐使用国内的 (这里手敲代码然后复制网站) yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 4.更新yum软件包索引 yum makecache fast # 5.安装docker docker-ce 社区版 ee 是企业版 yum install docker-ce docker-ce-cli containerd.io # 6、启动docker systemctl start docker # 7、使用 docker version 查看是否安装成功 docker version
2. 环境安装
mysql
docker run \ --name mysql2 \ -d \ -p 330:3306 \ --restart unless-stopped \ -v /home/mysql/log:/var/log/mysql \ -v /home/mysql/data:/var/lib/mysql \ -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \ -e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=asd123123 mysql:5.7.38 docker run \ -p 3306:3306 \ --restart unless-stopped \ -e MYSQL_ROOT_PASSWORD=aejkgixgds245safafg \ -v /home/data/mysql/data:/var/lib/mysql:rw \ -v /usr/local/mysql:/etc/mysql/conf.d \ --privileged=true \ --name mysqlname \ --restart=always \ -d mysql:8.0 --lower_case_table_names=1
redis
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /data/middleware/redis/myredis.conf:/etc/redis/redis.conf -v /data/middleware/redis/data:/data -d redis:5.0 /etc/redis/redis.conf --appendonly yes --requirepass fdshgjethr154@
nacos
docker run -d -p 8848:8848 -p 9848:9848 --restart always -e MODE=standalone -v/data/middleware/nacos/application.properties:/data/middleware/nacos/conf/application.properties -v /data/middleware/nacos/logs:/home/nacos/logs \nacos/nacos-server:v2.2.3
注意:正确的开启鉴权做法是怎样呢?1.回到第四步运行最终Nacos容器开启的那个容器,进入Nacos容器内部
docker exec -it nacos bash
2.修改conf下面的配置文件
cd conf vim application.properties
如图所示:修改三行,新增2行。
新增的两行:
##新增两行 nacos.core.auth.enabled=true nacos.core.auth.enable.userAgentAuthWhite=false
修改的三行
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey01234567890123456789012345345678999987654901234567890123456789} nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:admin} nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:admin} 或者 nacos.core.auth.plugin.nacos.token.secret.key=01234567890123456789012345345678999987654901234567890123456789 nacos.core.auth.server.identity.key=nacos nacos.core.auth.server.identity.value=nacos
nginx
# 生成容器 docker run --name nginx -p 9001:80 -d nginx # 将容器nginx.conf文件复制到宿主机 docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf # 将容器conf.d文件夹下内容复制到宿主机 docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d # 将容器中的html文件夹复制到宿主机 docker cp nginx:/usr/share/nginx/html /home/nginx/ # 直接执行docker rm nginx或者以容器id方式关闭容器 # 找到nginx对应的容器id docker ps -a # 关闭该容器 docker stop nginx # 删除该容器 docker rm nginx # 删除正在运行的nginx容器 docker rm -f nginx docker run \ --name ng \ -p 80:80 \ -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /home/nginx/conf/conf.d:/etc/nginx/conf.d \ -v /home/nginx/log:/var/log/nginx \ -v /home/nginx/html:/usr/share/nginx/html \ -d nginx:latest 注意:得先存在conf.d和nginx.conf docker run \ --name ng \ -p 80:80 -p 443:443 \ --restart unless-stopped \ -v /data/middleware/nginx/conf.d:/etc/nginx/conf.d \ -v /data/middleware/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v /data/app/web:/app nginx:latest
neo4j
docker run -d \ --name neo4j_main \ -p 7474:7474 \ -p 7687:7687 \ -v /home/neo4j/data:/data \ -v /home/neo4j/logs:/logs \ -v /home/neo4j/conf:/var/lib/neo4j/conf \ -v /home/neo4j/import:/var/lib/neo4j/import \ --env NEO4J_AUTH=neo4j/123456 \ neo4j:3.5.22-community
es
安装es
chmod 777 /home/es/es-data/nodes
1.拉取镜像
sudo docker pull elasticsearch:7.12.1
2.创建网络
docker network create es-net
3.运行
docker run -d \ --name es \ -e "ES_JAVA_OPTS=-Xms216m -Xmx216m" \ -e "discovery.type=single-node" \ -v es-data:/usr/share/elasticsearch/data \ -v es-plugins:/usr/share/elasticsearch/plugins \ --privileged \ --network es-net \ -p 9200:9200 \ -p 9300:9300 \ elasticsearch:7.12.1
-e "cluster.name=es-docker-cluster":设置集群名称 -e "http.host=0.0.0.0":监听的地址,可以外网访问 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":内存大小 -e "discovery.type=single-node":非集群模式 -v es-data:/usr/share/elasticsearch/data:挂载逻辑卷,绑定es的数据目录 -v es-logs:/usr/share/elasticsearch/logs:挂载逻辑卷,绑定es的日志目录 -v es-plugins:/usr/share/elasticsearch/plugins:挂载逻辑卷,绑定es的插件目录 --privileged:授予逻辑卷访问权 --network es-net :加入一个名为es-net的网络中 -p 9200:9200:端口映射配置
安装kibana
sudo docker pull kibana:7.12.1
docker run -d \ --name kibana \ -e ELASTICSEARCH_HOSTS=http://es:9200 \ --network=es-net \ -p 5601:5601 \ kibana:7.12.1
命令讲解: --network es-net :加入一个名为es-net的网络中,与elasticsearch在同一个网络中 -e ELASTICSEARCH_HOSTS=http://es:9200":设置elasticsearch的地址,因为kibana已经与elasticsearch在一个网络,因此可以用容器名直接访问elasticsearch -p 5601:5601:端口映射配置
安装ik分词器
IK分词器包含两种模式:
●ik_ smart:最少切分
●ik max_ _word:最细切分
# 进入容器内部 docker exec -it elasticsearch /bin/bash # 在线下载并安装 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip #退出 exit #重启容器 docker restart elasticsearch
mogodb
--restart=always \ --name mongo \ -e MONGO_INITDB_ROOT_USERNAME=root \ -e MONGO_INITDB_ROOT_PASSWORD=asd123 \ -v /home/mongo/data:/data/db \ -v /home/mongo/conf:/data/configdb \ -v /home/mongo/logs:/data/log \ -v /home/mongo/tmp:/tmp \ -p 2017:27017 \ mongo:latest
minio
docker run --privileged=true -d -it \ -p 9111:9111 -p 9000:9000 \ --name minio-a11 \ -v /opt/minio/data:/data \ -v /opt/minio/config:/root/.minio \ -e "MINIO_ROOT_USER=minio" \ -e "MINIO_ROOT_PASSWORD=minio123etge" \ minio/minio server /data \ --console-address ":9111"
jenkins
docker run -d --restart=always --name jenkins -uroot -p 8080:8080 -p 50000:50000 -v /home/docker/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:lts
rabbitmq
docker run -d --name rabbitmq01 \ -p 5672:5672 -p 15672:15672 \ -v /app/rabbitmq:/var/lib/rabbitmq --hostname localhost \ -e RABBITMQ_DEFAULT_VHOST=localhost \ -e RABBITMQ_DEFAULT_USER=root \ -e RABBITMQ_DEFAULT_PASS=root \ -v /etc/localtime:/etc/localtime:ro \ rabbitmq:3.8-management
docker-compose安装环境
compose安装
curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose --version 如果遇到容器权限问题 sudo chown -R 1001:1001 /data/kafka-data
version: '3' networks: mynet: ipam: # driver: bridge config: - subnet: 162.18.0.0/16 services: mysql: # 服务名称 image: mysql:8.0.18 # 或其它mysql版本 container_name: mysql8 # 容器名称 environment: - MYSQL_ROOT_PASSWORD=123456 # root用户密码 - TZ=Asia/Shanghai # 设置容器时区 我这里通过下面挂载方式同步的宿主机时区和时间了,这里忽略 volumes: - /data/middleware/mysql8/log:/var/log/mysql # 映射日志目录,宿主机:容器 - /data/middleware/mysql8/data:/var/lib/mysql # 映射数据目录,宿主机:容器 - /data/middleware/mysql8/conf.d:/etc/mysql/conf.d # 映射配置目录,宿主机:容器。 ports: - 3306:3306 # 指定宿主机端口与容器端口映射关系,宿主机:容器 restart: always # 容器随docker启动自启 networks: - mynet redis: image: redis:latest container_name: redis restart: always ports: - '6379:6379' volumes: - /data/middleware/redis/data:/data - /data/middleware/redis/redis.conf:/usr/local/etc/redis/redis.conf - /data/middleware/redis/logs:/logs #配置文件启动 command: redis-server /usr/local/etc/redis/redis.conf networks: - mynet minio: image: minio/minio hostname: "minio" ports: - 9000:9000 # api 端口 - 9001:9001 # 控制台端口 environment: MINIO_ACCESS_KEY: admin #管理后台用户名 MINIO_SECRET_KEY: admin123 #管理后台密码,最小8个字符 volumes: - /data/middleware/minio/data:/data #映射当前目录下的data目录至容器内/data目录 - /data/middleware/minio/config:/root/.minio/ #映射配置目录 command: server --console-address ':9001' /data #指定容器中的目录 /data privileged: true restart: always networks: - mynet nacos: image: nacos/nacos-server:2.0.3 container_name: nacos environment: MODE: standalone MYSQL_SERVICE_HOST: hostname MYSQL_SERVICE_DB_NAME: nacos MYSQL_SERVICE_USER: nacos MYSQL_SERVICE_PASSWORD: nacos ports: - "8848:8848" volumes: - /data/middleware/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties restart: always networks: - mynet rabbitmq: image: "rabbitmq:3.13.6-management" restart: always privileged: true ports: - "35672:5672" # RabbitMQ standard port - "45672:15672" # RabbitMQ management plugin port container_name: rabbitmq hostname: rabbitmq environment: - RABBITMQ_ERLANG_COOKIE=secret_cookie # Set a custom Erlang cookie for clustering - RABBITMQ_DEFAULT_USER=admin # Set RabbitMQ admin user - RABBITMQ_DEFAULT_PASS=_admin123 # Set RabbitMQ admin password networks: - mynet volumes: - /data/middleware/rabbitmq/storage:/var/lib/rabbitmq postgres: image: postgres:13.1 healthcheck: test: [ "CMD", "pg_isready", "-q", "-d", "postgres", "-U", "root" ] timeout: 45s interval: 10s retries: 10 restart: always environment: - POSTGRES_USER=root - POSTGRES_PASSWORD=password - APP_DB_USER=docker - APP_DB_PASS=docker - APP_DB_NAME=docker volumes: - /data/middleware/pg/db:/docker-entrypoint-initdb.d/ ports: - 5432:5432 networks: - mynet mongodb: image: mongo:4.4 container_name: mongodb restart: always environment: - TZ=Asia/Shanghai - MONGO_INITDB_DATABASE=demo - MONGO_INITDB_ROOT_USERNAME=demo - MONGO_INITDB_ROOT_PASSWORD=demo2023 ports: - "6383:27017" volumes: - /data/middleware/mongodb/data:/data/db - /data/middleware/mongodb/logs:/data/logs - /data/middleware/mongodb/config:/data/configdb networks: - mynet jenkins: # 这里的版本号,使用从官网上查看的最新 LTS 版本号 image: jenkins/jenkins:2.440.1 container_name: jenkins privileged: true restart: always ports: # web访问端口 - "8066:8080" # 基于JNLP的Jenkins代理端口 - "50000:50000" volumes: # jenkins的数据和配置文件目录映射 - /data/middleware/jenkins/data:/var/jenkins_home # 将外部的jdk目录映射到容器内部 - /data/middleware/jenkins/jdk:/app/jdk # 将外部的maven目录映射到容器内部 - /data/middleware/jenkins/maven:/app/maven networks: - mynet nginx: image: nginx:1.23-alpine container_name: production_nginx ports: - "80:80" - "443:443" volumes: - /data/middleware/nginx/config/nginx.conf:/etc/nginx/nginx.conf:ro - /data/middleware/nginx/config/conf.d:/etc/nginx/conf.d - /data/middleware/nginx/html:/usr/share/nginx/html - /data/middleware/nginx/logs:/var/log/nginx # - ./certs:/etc/ssl/certs environment: - TZ=Asia/Shanghai - NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx/conf.d networks: - mynet zookeeper: image: docker.io/bitnami/zookeeper:3.8 container_name: zookeeper_1 ports: - "2181:2181" volumes: - /data/middleware/zookeeper_1:/bitnami/zookeeper #持久化数据 environment: - TZ=Asia/Shanghai - ALLOW_ANONYMOUS_LOGIN=yes networks: - mynet kafka: restart: always image: docker.io/bitnami/kafka:3.4 container_name: kafka_1 ports: - "9004:9004" volumes: - /data/middleware/kafka_1:/bitnami/kafka #持久化数据 environment: - TZ=Asia/Shanghai - KAFKA_BROKER_ID=1 - KAFKA_CFG_LISTENERS=PLAINTEXT://:9004 - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.42:9004 #替换成你自己的IP - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 - ALLOW_PLAINTEXT_LISTENER=yes depends_on: - zookeeper networks: - mynet
redis.conf
port 6379 bind 0.0.0.0 requirepass xj2023 daemonize no loglevel notice logfile "" databases 16 appendonly no save 900 1 save 300 10 save 60 10000
nginx.conf
user nginx; worker_processes auto; error_log /var/log/nginx/error.log notice; 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; #gzip on; include /etc/nginx/conf.d/*.conf; }
detault.conf
server { listen 80; listen [::]:80; server_name localhost; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #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 /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
总结
到此这篇关于docker中间件部署超详细步骤的文章就介绍到这了,更多相关docker中间件部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!