注意事项:如果docker安装在服务器上,那么在docker上部署应用的时候,要注意不要与服务器上已安装的应用端口冲突。比如服务器本身装有mysql,端口是3306。如果docker容器部署的mysql通过3306端口映射到容器内的mysql的3306端口,那么此时就会产生冲突,需要将服务器本地的msyql停止服务之后,才可以继续使用docker容器的mysql。其他的应用也是同理。其次,注意防火墙需要开启容器对应的监听端口。

部署MySQL

  1. 拉取镜像

    1. docker pull mysql:8.0.23
  2. 创建容器,设置端口映射、目录映射

    1. # 在home目录下创建mysql目录,mysql目录中创建三个文件夹,用于mysql容器对应的目录映射
    2. mkdir ~/mysql
    3. cd ~/mysql
    4. mkdir logs data conf
    1. # 创建docker容器
    2. docker run -id \
    3. -p 3306:3306 \
    4. --name=mysql \
    5. -v $PWD/conf:/etc/mysql/conf.d \
    6. -v $PWD/logs:/logs \
    7. -v $PWD/data:/var/lib/mysql \
    8. -e MYSQL_ROOT_PASSWORD=199418 \
    9. mysql:8.0.23
  3. 参数说明

    1. # 将容器的 3306 端口映射到宿主机的 3306 端口。
    2. -p 3306:3306
    3. # $PWD表示当前目录。把当前目录下的conf,挂载到mysql容器的/etc/mysql/conf.d目录
    4. -v $PWD/conf:/etc/mysql/conf.d
    5. # 设置mysql的root用户的密码
    6. -e MYSQL_ROOT_PASSWORD=199418
    7. # 最后指定镜像版本
    8. mysql:8.0.23
  4. 进入容器

    1. docker exec it mysql /bin/bash

    进入容器后,相当于进入了mysql的终端内,可以使用mysql -uroot -p,来使用root用户登陆mysql,输入密码后即可进入到mysql。

部署Tomcat

  1. 拉取tomcat镜像

    1. # 如果不指定镜像的版本,默认拉取最新版
    2. docker pull tomcat
  2. 创建容器,设置端口映射、目录映射

    1. # 在/root目录下创建tomcat目录用于存储tomcat数据信息
    2. mkdir ~/tomcat
    3. cd ~/tomcat
    1. docker run -id --name=tomcat \
    2. -p 8080:8080 \
    3. # 将tomcat容器的/usr/local/tomcat/webapps目录映射到当前目录下
    4. -v $PWD:/usr/local/tomcat/webapps \
    5. tomcat

    部署Nginx

  3. 拉取镜像

    1. docker pull nginx
  4. 创建容器,设置端口映射、目录映射

    # 在/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

  1. 拉取镜像

    docker pull rabbitmq
    
  2. 创建docker容器并启动

    docker run -id -p 5672:5672 -p 15672:15672 --name=rabbitmq rabbitmq
    
  3. 进入RabbitMQ容器,开启管理控制台插件

    docker exec -it rabbitmq /bin/bash
    
    rabbitmq-plugins enable rabbitmq_management
    

    部署ElasticSearch

  4. 拉取镜像

    docker pull elasticsearch:7.12.0
    
  5. 修改虚拟内存区域大小,否则会因为过小而无法启动

    sysctl -w vm.max_map_count=262144
    
  6. 创建对应的挂载文件夹,创建容器并启动

    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
    
  7. 安装中文分词器

参考链接:https://github.com/medcl/elasticsearch-analysis-ik

部署LogStash

  1. 下载Docker镜像
    # 注意下载的版本要和ElasticSearch的版本要一致
    docker pull logstash
    
    TODO:具体的部署步骤后续再补上。