apolloconfig / apollo.net

Apollo .Net Client
Apache License 2.0
481 stars 167 forks source link

docker模式下使用官方提供的docker-compose.yaml如何给mysql设置密码 #162

Closed QQ897878763 closed 3 years ago

QQ897878763 commented 3 years ago

更新docker-compose内的mysql容器的user表密码如下:

update mysql.user set authentication_string=password('apollo@@@') where user='root' and HOST = '%' ;

更新docker-compose.yml后内容如下:

version: '2'

services:
  apollo-quick-start:
    image: nobodyiam/apollo-quick-start
    container_name: apollo-quick-start
    restart: unless-stopped
    environment:
      - EUREKA_INSTANCE_IP_ADDRESS= 'ip'
      - EUREKA_INSTANCE_PREFER_IP_ADDRESS=false
      - spring_datasource_url=jdbc:mysql://ip:13306/ApolloPortalDB?characterEncoding=utf8
      - spring_datasource_username=root
      - spring_datasource_password=apollo@@@
    depends_on:
      - apollo-db
    ports:
      - "8080:8080"
      - "8090:8090"
      - "8070:8070"
    links:
      - apollo-db

  apollo-db:
    image: mysql:5.7
    container_name: apollo-db
    restart: unless-stopped
    environment:
      TZ: Asia/Shanghai
      MYSQL_USER: root
      MYSQL_PASSWORD: apollo@@@
      MYSQL_ROOT_PASSWORD: apollo@@@
    depends_on:
      - apollo-dbdata
    ports:
      - "13306:3306"
    volumes:
      - ./sql:/docker-entrypoint-initdb.d
      - ./data:/var/lib/mysql
    volumes_from:
      - apollo-dbdata

  apollo-dbdata:
    image: alpine:latest
    container_name: apollo-dbdata
    volumes:
      - /var/lib/mysql

发现执行docker-compose up -d后apollo-quick-start服务无法启动,服务注册中心也无法启动。尝试将密码变更为空就可以,不过这样不安全,希望@nobodyiam 大佬提供下解决思路 谢谢

QQ897878763 commented 3 years ago

看了下 进入了容器apollo-quick-start内 检查了demo.sh ,应该就是它的问题,凌晨的电信太坑爹了,链接服务器后卡的动不了,明天试下吧demo.sh改下再重启容器,实在不行就基于现有容器基础上build新镜像,再将变更后的demo.sh打入到新镜像的环境内

QQ897878763 commented 3 years ago

哈哈哈,早上试了下将demo.sh通过挂载的方式生成容器,结果docker-compose的日志是这样

apollo-quick-start    | standard_init_linux.go:219: exec user process caused: exec format error

最后用最实在的方法,不采取挂在方式生成容器,启动了容器后进入容器的apollo-quick-start目录下,更新里面的spring数据库密码就好了。不知道有没有更加优雅的处理方式,这种方式虽然能解决问题,但是总觉得不妥,犹如黑魔法。

nobodyiam commented 3 years ago

按理说 environment 应该是可以的,可以按下面的尝试下

  environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://ip:13306/ApolloPortalDB?characterEncoding=utf8
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=apollo@@@
QQ897878763 commented 3 years ago

改成宿主机安装了,docker方式连接数据库有问题,宿主机的mysql是8.0.24.。 一直提示连接数据库链接无效,改为宿主机模式安装后相同的数据库连接语句没问题