注意事项:如果docker安装在服务器上,那么在docker上部署应用的时候,要注意不要与服务器上已安装的应用端口冲突。比如服务器本身装有mysql,端口是3306。如果docker容器部署的mysql通过3306端口映射到容器内的mysql的3306端口,那么此时就会产生冲突,需要将服务器本地的msyql停止服务之后,才可以继续使用docker容器的mysql。其他的应用也是同理。其次,注意防火墙需要开启容器对应的监听端口。
部署MySQL
拉取镜像
docker pull mysql:8.0.23
创建容器,设置端口映射、目录映射
# 在home目录下创建mysql目录,mysql目录中创建三个文件夹,用于mysql容器对应的目录映射
mkdir ~/mysql
cd ~/mysql
mkdir logs data conf
# 创建docker容器
docker run -id \
-p 3306:3306 \
--name=mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=199418 \
mysql:8.0.23
参数说明
# 将容器的 3306 端口映射到宿主机的 3306 端口。
-p 3306:3306
# $PWD表示当前目录。把当前目录下的conf,挂载到mysql容器的/etc/mysql/conf.d目录
-v $PWD/conf:/etc/mysql/conf.d
# 设置mysql的root用户的密码
-e MYSQL_ROOT_PASSWORD=199418
# 最后指定镜像版本
mysql:8.0.23
进入容器
docker exec –it mysql /bin/bash
进入容器后,相当于进入了mysql的终端内,可以使用
mysql -uroot -p
,来使用root用户登陆mysql,输入密码后即可进入到mysql。
部署Tomcat
拉取tomcat镜像
# 如果不指定镜像的版本,默认拉取最新版
docker pull tomcat
创建容器,设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=tomcat \
-p 8080:8080 \
# 将tomcat容器的/usr/local/tomcat/webapps目录映射到当前目录下
-v $PWD:/usr/local/tomcat/webapps \
tomcat
部署Nginx
拉取镜像
docker pull nginx
创建容器,设置端口映射、目录映射
# 在/root目录下创建nginx目录用于存储nginx数据信息 mkdir ~/nginx cd ~/nginx mkdir conf cd conf # 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容 vim nginx.conf
``` 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;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
> 这里的`nginx.conf`文件是自定义的配置文件,可以根据自己的需要配置
```bash
docker run -id --name=nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
部署RabbitMQ
拉取镜像
docker pull rabbitmq
创建docker容器并启动
docker run -id -p 5672:5672 -p 15672:15672 --name=rabbitmq rabbitmq
进入RabbitMQ容器,开启管理控制台插件
docker exec -it rabbitmq /bin/bash
rabbitmq-plugins enable rabbitmq_management
部署ElasticSearch
拉取镜像
docker pull elasticsearch:7.12.0
修改虚拟内存区域大小,否则会因为过小而无法启动
sysctl -w vm.max_map_count=262144
创建对应的挂载文件夹,创建容器并启动
sudo docker run -id --name=elasticsearch -p 9200:9200 -p 9300:9300 \ # 单节点模式 > -e "discovery.type=single-node" \ > -e "cluster.name=elasticsearch" \ > -v $PWD/elasticsearch/plugins/:/usr/share/elasticsearch/plugins \ > -v $PWD/elasticsearch/data/:/usr/share/elasticsearch/data \ # 设置jvm启动分配内存,最小512m,最大512m > -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \ > elasticsearch:7.12.0
安装中文分词器
参考链接:https://github.com/medcl/elasticsearch-analysis-ik
部署LogStash
- 下载Docker镜像
TODO:具体的部署步骤后续再补上。# 注意下载的版本要和ElasticSearch的版本要一致 docker pull logstash