温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Docker Compose方法怎么使用

发布时间:2021-12-13 11:44:45 来源:亿速云 阅读:140 作者:iii 栏目:云计算

这篇文章主要介绍“Docker Compose方法怎么使用”,在日常操作中,相信很多人在Docker Compose方法怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Docker Compose方法怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

开发环境组件信息

  • nginx proxy
  • java1 server
  • java2 server
  • java3 server
  • a Postgres database

其实在一台开发服务器上运行这些服务没什么大不了的,但是对于中小型公司,往往一台高配置开发服务器经常被多人占用,服务吗?少不了对外提供端口,少不了其它人的数据修改;当然这些问题也都是小问题,比如,我服务刚才还跑的好好的,怎么忽然不能用了呢?一顿操作猛如虎.....最后发现系统一个底层依赖被卸载了,这些环境问题,看似简单,其实排查起来非常费劲,因为错误信息大多不在你的认知范围之内,要不然怎么一直有运维都是玄学的说法呢?

另外生产环境已经部署了Kubernetes平台,少不了提供镜像,所以开发环境 docker-compose。

 

Docker-compose运行一堆Docker容器

Docker Compose允许你在一个名为docker-compose.yml的文件中运行一堆可以相互通信的Docker容器。编排文件如下所示:

version: "3.3"
services:
  db:
    image: postgres
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: password
  java_server1:
    image: java1
    volumes:
      - .:/app/
  java_server2:
    image: java2
    volumes:
      - .:/app/
java_server3:
    image: java
    volumes:
      - .:/app/
  web:
    image: nginx
    ports:
      - "8777:80"
 
  • 配置已经包含在镜像里面,有时我可能因为需要临时修改配置,这样的话,我会通过进入到容器或者把容器内部配置挂载到宿主机上修改。

  • 其中服务之间交互的部分我通过服务名称调用。

  • 通过使用docker-compose,网络配置也变得非常简单,例如我的nginx部分配置如下所示:

location ~ /java1* {
    proxy_pass http://java_server1:8080;
}
location java2 {
    proxy_pass http://java_server2:8081;
}
 
  • 公司太小以至于连个horbour都没有部署,镜像没有存放的位置,那你可以考虑使用数据卷挂载本地文件到镜像内部,而compose本身只是提供了一个编排和启动、以及枚举你所有服务的框架。
 

启动方式

我一直在通过运行docker-compose build来启动我的容器,然后运行docker-compose up来运行一切。

当然有时可能只改动了其中一个镜像,你也可以通过使用docker-compose create java_server2docker-compose start java_server2单独启动。

yaml文件中可以设置depends_on,以便更好地控制容器何时开始,但是对于我的服务开始顺序并不重要,所以我没有这样做。

 

测试环境

对于功能测试环境,部署方式跟开发环境并没有什么区别,但是对于测试人员来说,在接入了docker-compose之后变得更爽了;假设我们已经有一套自动化测试脚本,每次上线之前就可以实现在完全独立的环境下进行覆盖测试,测试完成之后直接销毁容器即可。不用考虑数据、环境、配置等影响。特别对于中小型公司,服务不多,发布频繁,并且接入了CI/CD持续集成持续部署的企业,建议采用此种方式。

 

生产环境

目前为止,我尝试着用docker-compose在生产环境中使用这个东西。虽然我可以容忍它的启动速度慢的问题,但是在使用过程仍然会碰到一些问题,比如:多个容器之间启动的先后顺序导致bug,但是你可以采用https://github.com/vishnubob/wait-for-it脚本,控制一个容器必须在另外一个容器完全启动之后再启动;另外没有调度、保活等功能,改来改去发现还不如使用shell脚本启动。当然如果你只是部署一个小型网站、一些简单的无状态服务,还可以考虑使用docker-compose。对于大量微服务(超过50个以上)还是建议采用Kubernetes。

到此,关于“Docker Compose方法怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI