docker实践 - springboot、mysql主从

Posted by YiBo on February 26, 2021

前记

今天搞了一天的docker,终于成功了,也是搞docker这么多年来,最清醒的一次,车热打铁,先记录一下遇到了什么问题

每次写下问题,发现问题根本不是问题 :(

过程中遇到的问题

  1. 俩个独立的 docker-compose 其实也就是容器,之前的通信问题

    可以新建一个network去解决

    我这里采用了将俩个项目写到一个compose中,会默认公用一个network,在这里我也新建了个。

  2. 过程中,对于 Dockerfile image docker-compose container 等概念的不清晰

    他们的关系:Dockerfile -》 image … imageN ==> docker-compose ==> container

  3. 命令的不熟悉

    根据Dockerfile生成镜像

    docker build –rm -t image-name .

    运行镜像

    docker run -itd –name container-name –restart always -v… image-name:version

    根据compose生成镜像

    docker-compose build –build-arg key=value

    运行compose 【后台+重新编译镜像+可以指定用镜像还是Dokerfile】

    docker-compose up -build -d

    查看日志

    docker logs -f container-name

    docker-compose logs -f

  4. docker - MySQL主从搭建 ==> 容器间的通信

    其实就是建立俩个MySQL容器,然后再去简单配置一下,就好了,但是我这里因为是之间在Mac上装的,相当于是一台主机上用docker建立了主从。在配置从库的时候,需要配置主库的IP和端口。其实这里和springboot项目连接MySQL的时候一样,通过compose公用的网络,直接访问容器名称或者service名称可以访问到对应的容器服务。还有一点就是俩个MySQL装到一台主机要把serverId变掉。在一点就是,容器之间的访问端口:直接访问容器内的端口,而不是宿主机的端口