Files
devops/mall_swarm_practic.md
2025-09-17 16:08:16 +08:00

106 lines
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# mall-swarm 容器化实践
```
# docker & docker-compose安装
yum install docker-ce
[root@rancher01 ~]# curl -L https://github.com/docker/compose/releases/download/2.0.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@rancher01 ~]# chmod +x /usr/local/bin/docker-compose
# ERROR
09:37:54 ~] docker-compose --version
/usr/local/bin/docker-compose: line 1: Not: command not found
# SOLVE, 用pip安装
https://blog.csdn.net/Deeeelete/article/details/103496918
```
```
yum install python
[root@rancher01 ~]# pip3 install docker-compose
[root@rancher01 ~]# docker-compose --version
docker-compose version 1.29.2, build unknown
```
```
#须在root下运行
[root@rancher01 mall-swarm.git]# docker-compose -f document/docker/docker-compose-env.yml up -d
。。。
Creating elasticsearch ...
Creating mysql ...
Creating rabbitmq ...
Creating nacos-registry ...
Creating elasticsearch ... done
Creating mysql ... done
Creating rabbitmq ... done
Creating nacos-registry ... done
Creating mongo ... done
ERROR: for nginx Cannot start service nginx: driver failed programming external connectivity on endpoint nginx (ade4f1a99b1c7fef74e68ba68ca8bb1f2e663e5411eeed52c6d54539cb
Creating redis ... done
Creating kibana ... done
Creating logstash ... error
ERROR: for logstash Cannot start service logstash: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:76: mounting "/mydata/logstash/logstash.conf" to rootfs at "/usr/share/logstash/pipeline/logstash.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
ERROR: for nginx Cannot start service nginx: driver failed programming external connectivity on endpoint nginx (ade4f1a99b1c7fef74e68ba68ca8bb1f2e663e5411eeed52c6d54539cbadfdad): Bind for 0.0.0.0:80 failed: port is already allocated
ERROR: for logstash Cannot start service logstash: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:76: mounting "/mydata/logstash/logstash.conf" to rootfs at "/usr/share/logstash/pipeline/logstash.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
ERROR: Encountered errors while bringing up the project.
# SOLVE
按http://www.macrozheng.com/#/deploy/mall_deploy_docker_compose操作解决 logstash启动问题
```
```
mysql> grant all privileges on *.* to 'reader' @'%' identified by 'awifi@123';
[root@rancher01 docker]# docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 \
> --link elasticsearch:es \
> -v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
> -d logstash:7.6.2
docker: Error response from daemon: Conflict. The container name "/logstash" is already in use by container "39f1c67063ea455bfa235bbe98be4e90bd87c2f7864d856f0a7b17c32ae75fa0". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
# SOLVE
docker container rm logstash
#再运行
[root@rancher01 docker]# docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 --link elasticsearch:es -v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf -d logstash:7.6.2
eb420d0f7cc1e8b5506dbbdf9d4805b689c1795974b4f1f9e667f939b45d7378
docker: Error response from daemon: Cannot link to /elasticsearch, as it does not belong to the default network.
#SOLVE
[root@rancher01 docker]# docker network ls
NETWORK ID NAME DRIVER SCOPE
ae8a541790cb bridge bridge local
62bb5b73670c docker_default bridge local
8033b07ea188 host host local
53fc0e8376f3 none null local
[root@rancher01 docker]# docker container rm logstash
logstash
[root@rancher01 docker]# docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 --link elasticsearch:es --net docker_default -v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf -d logstash:7.6.2
13f428ca4156d923a46cde6e01a8ab4569bc7e76e71776ab7431eed4e2fe2a2a
```
```
docker ps | grep logstash
发现logstash容器没有起来配置不对
[root@rancher01 elk]# cp /home/gavin/mall-swarm.git/document/elk/logstash.conf /mydata/logstash/
[root@rancher01 docker]# docker container rm logstash
logstash
[root@rancher01 docker]# docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 --link elasticsearch:es --net docker_default -v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf -d logstash:7.6.2
13f428ca4156d923a46cde6e01a8ab4569bc7e76e71776ab7431eed4e2fe2a2a
# 进入容器使用如下命令安装插件
[root@rancher01 elk]# docker exec -it logstash /bin/bash
logstash-plugin install logstash-codec-json_lines
```
## reference
- [ELK 日志分析实例](https://my.oschina.net/magedu/blog/693876)