• docker安装常用软件


    Linux系统安装docker请参考:Docker安装及常用命令_虚拟机安装docker命令_Lucifer Zhao的博客-CSDN博客

    docker安装mysql

    1、拉镜像:docker pull mysql:8.0.26

    2、创建数据目录:
    mkdir -p /mnt/data/mysql/data
    mkdir -p /mnt/data/mysql/logs
    mkdir -p /mnt/data/mysql/mysql-files 
    mkdir -p /mnt/data/mysql/conf

    3、在/mnt/data/mysql/conf下创建my.cnf配置文件,配置文件如下:

    1. # 对本地的mysql客户端的配置
    2. [client]
    3. default-character-set = utf8mb4
    4. # 对其他远程连接的mysql客户端的配置
    5. [mysql]
    6. default-character-set = utf8mb4
    7. # 本地mysql服务的配置
    8. [mysqld]
    9. character-set-client-handshake = FALSE
    10. character-set-server = utf8mb4
    11. collation-server = utf8mb4_unicode_ci
    12. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    13. # 禁用DNS
    14. skip-name-resolve
    15. default-time-zone = '+8:00'

    4、赋权限:chmod -R 777 /mnt/data/mysql/

    5、创建自定义网络:docker network create mynetwork

    6、创建容器并启动:
    docker run -itd  --network mynetwork --restart=always --privileged=true --name=mysql8  -p 3306:3306 -v /mnt/data/mysql/mysql-files:/var/lib/mysql-files/ -v /mnt/data/mysql/data:/var/lib/mysql -v /mnt/data/mysql/logs:/var/log/mysql  -v /mnt/data/mysql/conf/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=root mysql:8.0.26

    docker安装mongo

    1、拉镜像:docker pull mongo:6.0

    2、创建数据目录:mkdir -p /mnt/data/mongo/data

    3、赋权限:chmod -R 777 /mnt/data/mongo/

    4、创建容器并启动:

    1. docker run -d \
    2. --name mongo6 \
    3. --restart always \
    4. --network mynetwork \
    5. --privileged=true \
    6. -p 27017:27017 \
    7. -v /mnt/data/mongo/data:/data/db \
    8. -e MONGO_INITDB_ROOT_USERNAME=admin \
    9. -e MONGO_INITDB_ROOT_PASSWORD=admin123. \
    10. mongo:6.0 --auth

    5、创建用户并赋权:

    #创建超级管理员用户
    use admin;
    db.createUser({user: 'admin', pwd: 'admin', roles: [{role: 'root', db: 'admin'}]});
    #创建应用数据库用户
    use mydb;
    db.createUser({user: 'tom', pwd: 'tom', roles: [{role: 'dbOwner', db: 'mydb'}]});

    docker安装redis

    1、拉镜像:docker pull redis:6.0.9

    2、创建数据目录:
    mkdir -p /mnt/data/redis/data
    mkdir -p /mnt/data/redis/conf

    3、在/mnt/data/redis/conf下创建redis.conf配置文件,配置文件主要修改下面内容:

    1. # bind 127.0.0.1
    2. protected-mode yes
    3. port 6379
    4. tcp-backlog 511
    5. timeout 0
    6. tcp-keepalive 300
    7. save 900 1
    8. save 300 10
    9. save 60 10000
    10. rdbcompression yes
    11. requirepass 123456
    12. lazyfree-lazy-eviction no
    13. lazyfree-lazy-expire no
    14. lazyfree-lazy-server-del no
    15. replica-lazy-flush no
    16. appendonly no
    17. appendfsync everysec
    18. auto-aof-rewrite-percentage 100
    19. auto-aof-rewrite-min-size 64mb

    4、赋权限:chmod -R 777 /mnt/data/redis/

    5、创建容器并启动:

    1. docker run \
    2. --restart=always \
    3. --privileged=true \
    4. --log-opt max-size=100m \
    5. --log-opt max-file=3 \
    6. -p 6379:6379 \
    7. --name redis6 \
    8. -v /mnt/data/redis/conf/redis.conf:/etc/redis/redis.conf \
    9. -v /mnt/data/redis/data:/data \
    10. -v /etc/localtime:/etc/localtime:ro \
    11. -d redis:6.0.9 \
    12. redis-server /etc/redis/redis.conf \
    13. --appendonly yes \
    14. --requirepass 123456

    docker run --name redis6 --restart=always --privileged=true --network mynetwork -p 6379:6379  -v /mnt/data/redis/conf/redis.conf:/etc/redis/redis.conf -v /mnt/data/redis/data:/data  -d redis:6.0.9 redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456​​​​​

    注意:如果安装的redis版本支持requirepass 参数,尽量启动时设置密码;如果版本不支持,需要在redis启动后,进入控制台,按照下一步用命令设置密码,否则配置文件redis.conf里设置的密码不生效;

    6、设置密码(很重要)
    用docker命令进入容器内部:
    docker exec -it 容器ID /bin/bash
    进入redis目录:cd /usr/local/bin
    运行命令进入客户端:redis-cli
    或者通过redis客户端连接工具进入redis控制台,然后通过下面命令查看设置密码:
    查看当前redis密码:config get requirepass

    设置redis密码:config set requirepass ******
    若出现(error) NOAUTH Authentication required.错误,则使用 auth 密码 来认证密码
    可以发现,在设置密码前,即便我们在redis.conf中配置了密码,但这里仍然显示密码为空:

    docker安装elasticsearch

    1、拉镜像:docker pull elasticsearch:8.1.2

    2、创建数据目录:
    mkdir -p /mnt/data/elasticsearch/data
    mkdir -p /mnt/data/elasticsearch/plugins
    mkdir -p /mnt/data/elasticsearch/config
    mkdir -p /mnt/data/elasticsearch/logs

    3、在/mnt/data/elasticsearch/config下创建elasticsearch.yml配置文件,配置文件如下:

    单机不设置密码:

    1. node.name: node1
    2. network.host: 0.0.0.0
    3. network.publish_host: localhost
    4. http.port: 9200
    5. http.cors.enabled: true
    6. http.cors.allow-origin: "*"
    7. discovery.seed_hosts: ["localhost:9300"]
    8. transport.profiles.default.port: 9300
    9. xpack.security.enabled: false

    单机设置密码:

    1. cluster.name: "elastic"
    2. network.host: 0.0.0.0
    3. http.port: 9200
    4. http.cors.allow-headers: Authorization
    5. xpack.security.enabled: true
    6. xpack.security.transport.ssl.enabled: true

    集群部署:

    节点1节点2节点3
    cluster.name: es-cluster
    node.name: node1
    network.host: 0.0.0.0
    network.publish_host: 192.168.4.103
    http.port: 9200
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    cluster.initial_master_nodes: node1
    discovery.seed_hosts: ["192.168.4.103:9300"]
    transport.profiles.default.port: 9300
    xpack.security.enabled: false
    cluster.name: es-cluster
    node.name: node2
    network.host: 0.0.0.0
    network.publish_host: 192.168.4.103
    http.port: 9200
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    cluster.initial_master_nodes: node1
    discovery.seed_hosts: ["192.168.4.103:9300"]
    transport.profiles.default.port: 9300
    xpack.security.enabled: false
    cluster.name: es-cluster
    node.name: node3
    network.host: 0.0.0.0
    network.publish_host: 192.168.4.103
    http.port: 9200
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    cluster.initial_master_nodes: node1
    discovery.seed_hosts: ["192.168.4.103:9300"]
    transport.profiles.default.port: 9300
    xpack.security.enabled: false

    4、赋权限:chmod -R 777 /mnt/data/elasticsearch/

    5、创建容器并启动:
    docker run --name es8 -p 9200:9200  -p 9300:9300 --restart always --network mynetwork --privileged=true  -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" -v /mnt/data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /mnt/data/elasticsearch/data:/usr/share/elasticsearch/data -v /mnt/data/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:8.1.2

    1. docker run -d --restart=always \
    2. --privileged=true \
    3. --name es7 \
    4. -p 9200:9200 \
    5. -p 9300:9300 \
    6. --ulimit nofile=65536:65536 \
    7. --network mynetwork \
    8. -v /mnt/data/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
    9. -v /mnt/data/elasticsearch/data:/usr/share/elasticsearch/data \
    10. -v /mnt/data/elasticsearch/logs:/usr/share/elasticsearch/logs \
    11. -v /mnt/data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
    12. -e discovery.type=single-node \
    13. -e ES_JAVA_OPTS="-Xms1G -Xmx1G" \
    14. elasticsearch:7.10.1

    6、进入elasticsearch容器内部设置密码

    进入elasticsearch容器:docker exec -it es7 /bin/bash

    执行设置密码命令:bin/elasticsearch-setup-passwords interactive

    7、本地测试密码是否设置成功

    通过curl localhost:9200访问发现访问失败,提示需要认证,通过用户名密码访问可以成功:curl localhost:9200 -u elastic

    使用外网IP访问:curl localhost:9200 -u elastic,输入配置的密码如果提示连接被拒绝

    检查阿里云服务器安全组配置,分别配置出入方向端口,添加9200和9300端口

    查看防火墙开放的端口:firewall-cmd --zone=public --list-ports

    再次使用外网IP测试,浏览器外网访问,弹出验证界面:

    docker安装kafka

    docker安装nginx

    1、拉镜像:docker pull nginx

    2、创建数据目录:
    mkdir -p /mnt/data/nginx/logs
    mkdir -p /mnt/data/nginx/html
    mkdir -p /mnt/data/nginx/conf

    3、在/mnt/data/nginx/conf下创建nginx.conf配置文件,配置文件如下:

    1. worker_processes 4;
    2. worker_rlimit_nofile 655350;
    3. events {
    4. worker_connections 100000;
    5. }
    6. stream {
    7. upstream plcserver{
    8. #least_conn; # 把请求分派给连接数最少的服务器
    9. server 172.18.0.1:2526;
    10. server 172.18.0.2:2526;
    11. #hash $remote_addr consistent;
    12. #server 127.0.0.1:6000 weight=1 max_fails=3 fail_timeout=30s;
    13. #server 127.0.0.1:6002 weight=1 max_fails=3 fail_timeout=30s;
    14. }
    15. server {
    16. listen 2526;
    17. proxy_pass plcserver;
    18. tcp_nodelay on;
    19. proxy_connect_timeout 1s;
    20. #proxy_timeout 3s;
    21. # 开启代理协议,通过协议发送真实IP
    22. proxy_protocol on;
    23. }
    24. }
    25. http {
    26. include mime.types;
    27. default_type application/octet-stream;
    28. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    29. # '$status $body_bytes_sent "$http_referer" '
    30. # '"$http_user_agent" "$http_x_forwarded_for"';
    31. #access_log logs/access.log main;
    32. sendfile on;
    33. #tcp_nopush on;
    34. #keepalive_timeout 0;
    35. keepalive_timeout 65;
    36. # 开启gzip压缩
    37. gzip on;
    38. # 不压缩临界值,大于1K的才压缩,一般不用改
    39. gzip_min_length 1k;
    40. # 压缩缓冲区
    41. gzip_buffers 16 64K;
    42. # 压缩版本(默认1.1,前端如果是squid2.5请使用1.0
    43. gzip_http_version 1.1;
    44. # 压缩级别,1-10,数字越大压缩的越好,时间也越长
    45. gzip_comp_level 5;
    46. # 进行压缩的文件类型
    47. gzip_types text/plain
    48. application/x-javascript
    49. text/css
    50. application/xml
    51. application/javascript;
    52. # 跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding"
    53. gzip_vary on;
    54. # IE6对Gzip不怎么友好,不给它Gzip了
    55. gzip_disable "MSIE [1-6]\.";
    56. upstream myserver {
    57. server 172.18.0.2:8888; #前端请求经过nginx代理后到后台的服务IP和端口
    58. }
    59. server {
    60. listen 80;
    61. #填写证书绑定的域名
    62. server_name 172.18.0.2;
    63. #将所有HTTP请求通过rewrite指令重定向到HTTPS
    64. rewrite ^(.*)$ https://$host$1;
    65. location / {
    66. root /mnt/project/frontend/dist;
    67. try_files $uri $uri/ /index.html;
    68. index index.html index.htm;
    69. }
    70. }
    71. server {
    72. listen 443 ssl;
    73. # server_name 172.18.0.2;
    74. ssl_certificate cert/1111111_xxxxxxx.cn.pem;
    75. ssl_certificate_key cert/1111111_xxxxxxx.cn.key;
    76. ssl_session_timeout 5m;
    77. ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    78. ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    79. ssl_prefer_server_ciphers on;
    80. location / {
    81. root /mnt/project/frontend/dist;
    82. try_files $uri $uri/ /index.html;
    83. index index.html index.htm;
    84. }
    85. location /profile {
    86. alias /mnt/uploadPath/;
    87. }
    88. location /prod-api/ {
    89. proxy_set_header Host $http_host;
    90. proxy_set_header Upgrade $http_upgrade;
    91. proxy_set_header Connection upgrade;
    92. proxy_set_header X-Real-IP $remote_addr;
    93. proxy_set_header REMOTE-HOST $remote_addr;
    94. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    95. proxy_pass http://myserver;
    96. }
    97. location /vue/ {
    98. alias /mnt/project/frontend/vue;
    99. }
    100. location /vue/lbx/ {
    101. alias /mnt/project/frontend/h5/;
    102. }
    103. location /web-api/ {
    104. proxy_pass http://myserver;
    105. }
    106. error_page 500 502 503 504 /50x.html;
    107. location = /50x.html {
    108. root html;
    109. }
    110. # MP_verify_vxs6TlQn9pENraPp.txt
    111. location = /MP_verify_sdfsfsfsfsf.txt {
    112. alias /mnt/uploadPath/MP_verify_sdfsfsfsfsf.txt;
    113. }
    114. }
    115. #nginx优化----------------------
    116. #隐藏版本号
    117. server_tokens on;
    118. #优化服务器域名的散列表大小
    119. server_names_hash_bucket_size 64;
    120. server_names_hash_max_size 2048;
    121. #开启高效文件传输模式
    122. #sendfile on;
    123. #减少网络报文段数量
    124. #tcp_nopush on;
    125. #提高I/O性能
    126. tcp_nodelay on;
    127. #连接超时 时间定义 默认秒 默认65
    128. #keepalive_timeout 60;
    129. #读取客户端请求头数据的超时时间 默认秒 默认60
    130. client_header_timeout 15;
    131. #读取客户端请求主体的超时时间 默认秒 默认60
    132. client_body_timeout 15;
    133. #响应客户端的超时时间 默认秒 默认60
    134. send_timeout 25;
    135. #上传文件的大小限制 默认1m
    136. client_max_body_size 8m;
    137. }

    4、赋权限:chmod -R 777 /mnt/data/nginx/

    5、创建容器并启动:
    docker run --name nginx -m 500m -p 80:80 --restart always --network mynetwork -v /mnt/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /mnt/data/nginx/logs:/var/log/nginx -v /mnt/data/nginx/html:/usr/share/nginx/html -v /mnt/project/frontend/build:/mnt/project/frontend/build -e TZ=Asia/Shanghai --privileged=true -d nginx

  • 相关阅读:
    【vue3+ts后台管理】商品列表完成
    ME60单板加载故障维护经验
    docker入门到精通一文搞定
    Vue组件通信(组件的自定义事件、全局事件总线、消息订阅与发布、插槽、props)(八)
    如何才能从程序员到架构师?
    (三)(Driver)驱动开发之双机调试环境搭建及内核驱动的运行
    [SpringBoot-vue3]用户登录实现JWT单点登录/ThreadLocal保存用户信息
    GCP谷歌云有什么数据库类型,该怎么选择
    HTTP协议
    JS重启自动运行加载视频错误
  • 原文地址:https://blog.csdn.net/luciferlongxu/article/details/132731623