小言_互联网的博客

使用docker compose一键部署多个服务

381人阅读  评论(0)

docker compose 是 docker 官方的开源项目,用来实现对 docker 容器集群的快速编排

下载安装

官网下载地址:点这里

我用的是云服务器,所以就直接用yum安装了,直接执行这两条命令,等安装结束后查看版本,看到版本号表示安装成功

下面还有一种手动安装的方式,因为是访问的github,我的服务器一直访问失败,就只能用上面那种方式了

不使用 compose 部署项目

我这里用一个springboot项目来测试,只写了一个接口,访问redis和mysql

编写dockerfile来构建镜像


  
  1. FROM java:8
  2. MAINTAINER vhukze
  3. # 指定临时文件夹为/tmp
  4. VOLUME /tmp
  5. # 将jar包添加到容器中重命名为my-docker.jar
  6. ADD docker-test.jar my-docker.jar
  7. # 运行jar包
  8. RUN bash -c 'touch /my-docker.jar'
  9. ENTRYPOINT [ "java", "-jar", "/my-docker.jar"]
  10. # 暴露8888端口
  11. EXPOSE 8888

把项目的jar包和Dockerfile文件上传到服务器,我这里放到了/mydocker路径下

使用命令构建镜像(注意最后的点,表示Dockerfile文件在当前目录下)

docker build -t my-docker:1.0 .

稍等一会儿之后,构建成功,查看镜像

这里代码访问的redis和mysql同样是docker中启动的 

使用my-docker镜像启动一个容器

docker run -d -p 8888:8888 my-docker:1.0

不使用compose,需要单独启动三个容器,执行三遍docker run 

使用 compose 部署项目

编写docker-compose.yml文件,并上传到服务器的/mydocker 路径下


  
  1. version: "3"
  2. # 多个服务
  3. services:
  4. # my-docker服务
  5. myDockerService:
  6. # 镜像名称和版本
  7. image: my-docker:1.0
  8. # 启动的容器名称
  9. container_name: my-docker
  10. # 端口
  11. ports:
  12. - 8888:8888
  13. # 容器数据卷
  14. volumes:
  15. - /app/myDocker:/data
  16. # 网络模式 (最下方自定义的一个网络模式)
  17. networks:
  18. - my_net
  19. # 依赖的服务(表示需要依赖的服务先启动)
  20. depends_on:
  21. - redis
  22. - mysql
  23. # redis 服务
  24. redis:
  25. image: redis
  26. ports:
  27. - 6666:6379
  28. volumes:
  29. - /app/redis/redis.conf:/etc/redis/redis.conf
  30. - /app/redis/data:/data
  31. networks:
  32. - my_net
  33. # 启动命令
  34. command: redis-server /etc/redis/redis.conf
  35. # mysql服务
  36. mysql:
  37. image: mysql:5.7
  38. # mysql 相关配置
  39. environment:
  40. MYSQL_ROOT_PASSWORD: '123456'
  41. MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
  42. MYSQL_DATABASE: 'testdb'
  43. MYSQL_USER: 'vhukze'
  44. MYSQL_PASSWORD: 'vhukze'
  45. ports:
  46. - 3306:3306
  47. volumes:
  48. - /app/mysql/db:/var/lib/mysql
  49. - /app/mysql/conf/my.cnf:/etc/my.cnf
  50. - /app/mysql/init:/docker-entrypoint-initdb.d
  51. networks:
  52. - my_net
  53. # 解决外部无法访问问题
  54. command: --default-authentication-plugin=mysql_native_password
  55. # 创建自定义网络模式
  56. networks:
  57. my_net:

使用同一个自定义网络模式,互相之间可以通过服务名称访问,修改项目配置文件,把redis和mysql的ip改为服务名称(注意这里redis的端口要改成容器内使用的端口,因为是容器之间互相访问,不会走宿主机的端口)

再次打包项目上传到服务器,使用Dockerfile构建镜像

在docker-compose.yml所在目录执行下面命令,检查语法是否有误

执行之后没有任何输出,表示语法没有问题

docker compose config -q

使用docker-compose启动三个容器

在docker-compose.yml所在目录执行下面命令

docker compose up -d

可以看到网络模式和三个容器都创建完成了

使用浏览器访问my-docker项目的接口,访问成功

一键停止并删除

docker compose down

 一键停止

docker compose stop

 一键启动

docker compose start

 一键重启

docker compose restart

结论是 通过docker-compose可以一键创建和删除多个容器 


转载:https://blog.csdn.net/qq_41890624/article/details/128389234
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场