Docker Compose

单个主机中多个容器的编排,通过一个单独的docker-compose.yml模版文件(YAML格式)来定义一组相关联的应用容器。

Compose中有两个重要的个概念:

  • 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目(project):由一组关联的应用容器组成的一个完整业务单元,在 dockercompose.yml 文件中定义。

Compose 项目由 Python 编写,实现上调用了Docker服务提供的API来对容器进行管理。

Compose下载安装

  • 从 官方GitHub Release处直接下载编译好的二进制文件
bash 复制代码
$ sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

$ sudo chmod +x /usr/local/bin/docker-compose
  • 使用pip安装,如果是x86_64架构linux建议使用下载二进制的方式,如果是ARM架构的系统使用pip安装
bash 复制代码
$ sudo pip install -U docker-compose
  • bash 补全命令
bash 复制代码
$ curl -L https://raw.githubusercontent.com/docker/compose/1.8.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
  • 卸载

如果是二进制包方式安装的,直接删除二进制文件即可,卸载命令:sudo rm /usr/local/bin/docker-compose

如果是通过匹配安装的,卸载命令:sudo pip uninstall docker-compos

使用实例

功能说明

启动一个书籍管理系统的web服务,可进行数据信息的增加和删除,二进制文件为bookmanger。数据存在mysql中。

在容器中部署,启动两个容器,一个运行bookmanger后端程序,一个容器运行mysql数据库。

部署流程

  • 下载ubuntu和mysql镜像
  • go代码编译:golang镜像最新的版本是1.7,所以不能使用镜像编译,直接在本地编译。
  • ubuntu镜像制作:Dockerfile内容如下:
bash 复制代码
FROM ubuntu
WORKDIR /
COPY bookmanger /bin/
COPY view /view
CMD ["bookmanger"]

手动部署

mysql容器手动部署,设置root密码为password,创建名为sql_test的数据库,创建一个名为myuser的用户,并设置用户密码为userpassword。

bash 复制代码
docker run -d -p 3306 --name db -v ./db/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=sql_test  \
    -e MYSQL_USER=myuser -e MYSQL_PASSWORD=userpassword mysql

docker exec -it db mysql -uroot -p

bms容器手动部署

bash 复制代码
docker run --name bms -d -p 8999:8999 -ip 172.17.0.2 -it ubuntu:bms

使用compose部署

docker-compose.yml文件如下:

bash 复制代码
version: "3"
services:
  db:
     image: mysql
     ports:
       - "3306:3306"
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: password
       MYSQL_DATABASE: sql_test
       MYSQL_USER: myuser
       MYSQL_PASSWORD: userpassword
     volumes:
       - ./db/data:/var/lib/mysql

  bms:
     build: bookmanger/
     command: bookmanger
     ports:
       - "8999:8999"
     depends_on:
       - db
     restart: always
     links:
       - db
       - db:database

compose目录结构

bash 复制代码
composebms/
├── bookmanger
│   ├── bookmanger
│   ├── Dockerfile
│   └── view
│       ├── list.html
│       └── new.html
├── db
│   ├── data
│   │   └── sql_test
│   │       └── book.ibd
│   └──  tables.sql
└── docker-compose.yml
相关推荐
Johny_Zhao1 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
zwjapple2 小时前
docker-compose一键部署全栈项目。springboot后端,react前端
前端·spring boot·docker
代码老y4 小时前
Docker:容器化技术的基石与实践指南
运维·docker·容器
DuelCode5 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
掘金-我是哪吒8 小时前
分布式微服务系统架构第156集:JavaPlus技术文档平台日更-Java线程池使用指南
java·分布式·微服务·云原生·架构
杨浦老苏9 小时前
开源服务运行监控工具Lunalytics
docker·群晖·网站监控
阿里云云原生10 小时前
Serverless JManus: 企业生产级通用智能体运行时
云原生
Kookoos14 小时前
ABP VNext + Tye:本地微服务编排与调试
微服务·云原生·架构·tye
呆萌的代Ma16 小时前
解决Mac上的老版本docker desktop 无法启动/启动后一直转圈/无法登陆账号的问题
macos·docker·eureka
feilieren16 小时前
Docker 安装 Elasticsearch 9
运维·elasticsearch·docker·es