部署mall电商系统踩坑记录

一、 mysql

docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7

问题1:
dockers run之后,docker ps 发现容器Exited了
运行 docker logs mysql,显示 mysqld: Can't read dir of '/etc/mysql/conf.d/'

解决:
https://blog.csdn.net/qq_45564783/article/details/126440171
查找资料知道了,mysql修改了配置文件路径

  1. 不带配置文件映射启动mysql docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
  2. 查看容器运行情况并顺便复制容器id docker ps
  3. 把容器的配置文件复制出来 docker cp 940c01a21882:/etc/mysql/ /mydata/mysql/conf (940c01a21882是容器id)
  4. 进入/mydata/mysql/conf路径,查看复制出来的文件cd /mydata/mysql/conf
    mysql文件夹下有三个文件 conf.d my.cnf mysql.conf.d
  5. 因为关联的是/mydata/mysql/conf这个路径,所以把这三个文件全部复制到/mydata/mysql/conf路径下
cp -r conf.d/ /mydata/mysql/conf
cp my.cnf /mydata/mysql/conf
cp -r mysql.conf.d /mydata/mysql/conf

  1. 配置文件my.cnf中 !includedir 的路径为my.conf.d,但是这个文件已经没有了,所以要更改my.conf.d为conf.d
    vim my.cnf
  2. 停止运行容器并删除容器
    docker stop mysql
    docker rm mysql
  3. 重新创建容器
  4. docker ps 查看mysql运行正常,问题解决

三、nginx

问题1:
启动容器后nginx立马exit,查看docker logs
nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)
解决:
第一次启动容器,教程命令为

docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx  \
-d nginx:1.22

改为

docker run -p 80:80 --name nginx \
-d nginx:1.22

不挂载文件

四、Elasticsearch

启动 容器

docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "discovery.type=single-node" \
-e "cluster.name=elasticsearch" \
-e "ES_JAVA_OPTS=-Xms512m -Xmx1024m" \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:7.17.3

问题1
启动容器报错
docker: Error response from daemon: driver failed programming external connectivity on endpoint elasticsearch (3154e04c8d09de6bcb02a7a441d32f8ff4315b67cc32da6879f): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9301 -j DNAT --to-destination 172.17.0.5:9300 ! -i docker0: iptables: No chain/target/match by that name. (exit status 1)).
解决:
https://blog.csdn.net/qq_24452475/article/details/83901620
更改防火墙配置后导致的,需要重启docker

  1. 重启docker服务 service docker restart
  2. 删除已创建的Elasticsearch容器 docker rm elasticsearch
  3. 再次重新创建容器,成功

五、访问接口文档地址
mall-admin的api接口文档地址:http://192.168.3.101:8080/swagger-ui/
问题:
更改为服务器地址,访问提示“{"code":401,"data":"Full authentication is required to access this resource","message":"暂未登录或token已经过期"}”
解决:
地址错误,改为http://192.168.2.1:8080/swagger-ui.html#/

posted @ 2022-12-22 08:34  丛影HHZ  阅读(98)  评论(0编辑  收藏  举报