由于Java开发需要用到的数据库,中间件等比较多,所以选择使用Docker来进行安装比较方便,云服务器的话由于内存和CPU的限制不一定可以安装这些开发环境,所以可以使用Docker Desktop在Windows系统上安装Java开发环境,既节省资源又非常方便快捷。
1.安装Docker Desktop
直接去官网下载windows版本的Docker Desktop安装包,然后直接安装Docker Desktop,安装完成之后打开Docker Desktop,最后打开PowerShell作为控制台来执行docker命令。将所有容器连接到同一个网络,方便使用容器名互相访问
2.安装MySQL
1.创建挂载目录
mkdir E:\development_sources\docker\mysql\log,E:\development_sources\docker\mysql\data,E:\development_sources\docker\mysql\conf,E:\development_sources\docker\mysql\mysql-files
2.执行命令安装MySQL
docker run -p 3306:3306 --restart=always --name mysql -v E:\development_sources\docker\mysql\log:/var/log/mysql -v E:\development_sources\docker\mysql\data:/var/lib/mysql -v E:\development_sources\docker\mysql\conf:/etc/mysql -v E:\development_sources\docker\mysql\mysql-files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.24
3.创建网络并连接容器
docker network create dev_net
docker network connect dev_net mysql
使用Navicat连接MySQL数据库,显示结果如下:
3.安装Redis
1.创建挂载目录
mkdir E:\development_sources\docker\redis\data
2.执行命令安装Redis
docker run -p 6379:6379 --restart=always --name redis -v E:\development_sources\docker\redis\data:/data -d redis redis-server --appendonly yes --requirepass redis
3.连接容器
docker network connect dev_net redis
使用Another Redis Desktop Manager来连接redis,显示结果如下:
4.安装nginx
1.创建挂载目录
mkdir E:\development_sources\docker\nginx\html,E:\development_sources\docker\nginx\logs
2.执行命令安装Nginx
docker run -p 80:80 --restart=always --name nginx -v E:\development_sources\docker\nginx\html:/usr/share/nginx/html -v E:\development_sources\docker\nginx\logs:/var/log/nginx -d nginx
3.连接容器
docker network connect dev_net nginx
然后在E:\development_sources\docker\nginx\html中创建一个index.html文件,里面写hello world,可以在浏览器中通过nginx访问到
5.安装RabbitMQ
1.执行命令安装RabbitMQ
docker run -p 5672:5672 -p 15672:15672 --restart=always --name rabbitmq -d rabbitmq
2.进入容器并开启管理功能
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
3.连接容器
docker network connect dev_net rabbitmq
4.访问15672端口输入账号密码并登录:guest guest
6.安装Elasticsearch
1.创建挂载目录
mkdir E:\development_sources\docker\elasticsearch\plugins,E:\development_sources\docker\elasticsearch\data,E:\development_sources\docker\elasticsearch\config
2.在E:\development_sources\docker\elasticsearch\config目录下创建elasticsearch.yml,并写入以下内容
http.host: 0.0.0.0
3.执行命令安装Elasticsearch
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch --restart=always -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms256m -Xmx512m" -v E:\development_sources\docker\elasticsearch\plugins:/usr/share/elasticsearch/plugins -v E:\development_sources\docker\elasticsearch\data:/usr/share/elasticsearch/data -v E:\development_sources\docker\elasticsearch\config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -d elasticsearch:7.17.5
4.进入容器内部并安装中文分词器
docker exec -it elasticsearch /bin/bash
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.5/elasticsearch-analysis-ik-7.17.5.zip
5.连接容器
docker network connect dev_net elasticsearch
6.重启容器
docker restart elasticsearch
然后在浏览器中访问localhost:9200,显示结果如下
7.安装Logstash
1.创建挂载目录
mkdir E:\development_sources\docker\logstash\pipeline,E:\development_sources\docker\logstash\config
2.在E:\development_sources\docker\logstash\pipeline目录下创建logstash.conf,并写入以下内容
#日志采集入口,项目的logback会和这个input交互
input {
tcp {
#模式为 server
mode => "server"
#ip为logstash的地址
host => "0.0.0.0"
#监听的端口,以此端口获得日志数据
port => 9413
#数据格式为json
codec => json_lines
}
}
#日志存储目标:es
output {
elasticsearch {
hosts => "elasticsearch:9200"
index => "springboot-logs-%{+YYYY.MM.dd}"
codec => "json"
}
}
3.在E:\development_sources\docker\logstash\config目录下创建logstash.yml,并写入以下内容
api.http.host: 0.0.0.0
xpack.monitoring.elasticsearch.hosts: ["http://elasticsearch:9200"]
4.执行命令安装Logstash
docker run --name logstash --net dev_net -m 1000M --restart=always -p 9600:9600 -p 9413:9413 --privileged=true -e ES_JAVA_OPTS="-Duser.timezone=Asia/Shanghai" -v E:\development_sources\docker\logstash\pipeline\logstash.conf:/usr/share/logstash/pipeline/logstash.conf -v E:\development_sources\docker\logstash\config\logstash.yml:/usr/share/logstash/config/logstash.yml -d logstash:7.17.5
5.进入容器内部
docker exec -it logstash /bin/bash
6.安装json_lines插件
logstash-plugin install --no-verify logstash-codec-json_lines
然后在浏览器中访问localhost:9600,显示结果如下
8.安装Kibana
1.执行命令安装Kibana
docker run --name kibana --net dev_net --restart=always -p 5601:5601 -e "elasticsearch.hosts=http://elasticsearch:9200" -d kibana:7.17.5
然后在浏览器中访问localhost:5601,显示结果如下
9.安装MongoDB
1.创建挂载目录
mkdir E:\development_sources\docker\mongo\db
2.执行命令安装MongoDB
docker run -p 27017:27017 --restart=always --name mongo -v E:\development_sources\docker\mongo\db:/data/db -d mongo --auth
3.进入容器内部
docker exec -it mongo mongosh admin
4.创建用户
db.createUser({
user:'admin',pwd:'123456',roles:[ {
role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
5.验证用户
db.auth('admin','123456')
6.连接容器
docker network connect dev_net mongo
使用Navicat连接MongoDB数据库,显示结果如下:
10.安装Nacos
1.在mysql中创建nacos数据库,并在nacos数据库中执行下面的sql脚本
/*
* Copyright 1999-2018 Alibaba Group Holding Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/******************************************/
/* 数据库全名 = nacos_config */
/* 表名称 = config_info */
/******************************************/
CREATE TABLE `config_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`data_id` varchar(255) NOT NULL COMMENT 'data_id',
`group_id` varchar(255) DEFAULT NULL,
`content` longtext NOT NULL COMMENT 'content',
`md5` varchar(32) DEFAULT NULL COMMENT 'md5',
`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`src_user` text COMMENT 'source user',
`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
`app_name` varchar(128) DEFAULT NULL,
`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
`c_desc` varchar(256<