docker-compose + spring boot + mysql + redis + nginx 发布web应用: part 3

经过前两篇文章,

docker-compose + spring boot + mysql + redis + nginx 发布web应用: part 1

docker-compose + spring boot + mysql + redis + nginx 发布web应用: part 2

 

已经可以使用docker-compose发布小型的应用了。其实在开发环境中,我觉得还是挺方便的吧。(个人认为哈)

这里再扯点别的。

1. 个人以为,jenkins是个好东西,其实用jenkins, 前面 part 1, part 2 还可以更简单。 不过这里就不研究了。

2.  如果没有配置docker的阿里镜像加速,挂掉是必须的哈。 其实配置阿里的docker加速器,也不太难:

     就注册个阿里的开发者帐号就行。 然后就会有你自己的加速配置。(自行X度吧)

     如果想重新开始, 就先

        # docker-compose down

     如果实在搞不明白,就用docker stop,  docker rm 等命令先停掉容器,再一个个删吧。

3.  查看 docker-compose.yml里的 db_data 映射到哪里

    # docker volume ls

   

   # docker volume inspect compose-demo_db_data

  

   图中红框是实际db_data的位置。

   因为这里实际保存mysql的数据,即使删除mysql的容器(docker-compose down,  或 docker rm xxx),下次再建立容器时,

   数据还在,root密码不会变。

   所以,如果docker-compose里密码改变的话,就要删除db_data这个volume,让docker-compose重建volume, 再重新初始化数据库。

   (当然进入 docker容器里改root密码也行,不过这要用mysql客户端,相对麻烦,如果你mysql用得666, 就没什么好说了。那就改吧。)

   #  docker volume rm compose-demo_db_data     

 

至此, <<docker-compose + spring boot + mysql + redis + nginx 发布web应用>>  结束。

 

 --------------------------------------------------------------------------------------------------------------------

  更新一波:

   docker-compose.yml    mysql部分: 

mysql:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    volumes:                                  使用volumes 将 ./ 映射到 mysql 容器的 /docker-entrypoint-initdb.d/ 目录
      - ./:/docker-entrypoint-initdb.d/       这样,./ 里的sql就会被自动执行了。
    environment:
      MYSQL_ROOT_HOST: '%'
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: compose
      MYSQL_USER: boot
      MYSQL_PASSWORD: boot123

使用volumes 映射后,第二部分中的mysql初始化就可以省略了。

但这样会每次docker-compose up -d 都会执行,所以如果不想mysql里的数据丢失的话 (因为sql里有删库的操作,删库但不跑路,哈哈)

执行初始化后,就要把volumes这两行去掉。免得以后再次执行sql文件。

     

       

posted @ 2020-03-19 21:56  北极熊129  阅读(655)  评论(0编辑  收藏  举报