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

5.1 KiB
Raw Permalink Blame History

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