Skip to content
鼓励作者:欢迎打赏犒劳

docker-compose

docker-compose 就是用过yaml的方式来实现docker的编排

特别注意!!!你要使用docker-compose命令,必须当前目录下有docker-compose.yml文件!!!

安装docker-compose

centos的系统

shell
# 1. 安装 epel-release 扩展源
sudo yum install -y epel-release

# 2. 使用 yum 安装 docker-compose
sudo yum install -y docker-compose

# 3. 验证安装
docker-compose --version


#如果报命令不存在 则应该是路径问题  用下面的测试
/usr/bin/docker-compose --version

# 为了让终端在任何地方都能识别 docker-compose 命令,你可以创建一个软链接
sudo ln -s /usr/bin/docker-compose /usr/local/bin/docker-compose

常用命令

shell
# 启动所有服务(后台运行)
docker-compose up -d

# 查看运行状态
docker-compose ps

# 查看日志
docker-compose logs

# 启动容器
docker-compose start

# 停止但不删除容器
docker-compose stop

# 停止并删除容器、网络
docker-compose down

# 重新构建并启动(代码修改后)
docker-compose up -d --build

# 只启动某个服务
docker-compose up -d nginx-app

第一个简单的docker-compose.yml

text
你的项目目录/
├── docker-compose.yml    # 这个文件
├── Dockerfile            # nginx2 需要的 Dockerfile

docker-compose.yml

shell
version: "3.3"  # 使用更新的版本

services:
  # 反向代理/网关(使用最新版)
  nginx-proxy:
    image: nginx:alpine        # 使用 alpine 版本,体积更小
    container_name: nginx-proxy
    ports:
      - "8081:80"
    restart: unless-stopped    # 自动重启策略

  # 应用服务器(需要构建)
  nginx-app:
    image: my-custom-nginx:v1  # <--- 添加这一行,强制指定镜像名
    depends_on:
      - nginx-proxy            # 等待代理启动
    build:
      context: .
      dockerfile: Dockerfile   # 可指定 Dockerfile 名称
    container_name: nginx-app
    ports:
      - "8082:80"
    restart: unless-stopped
    # 添加健康检查
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      timeout: 3s
      retries: 3

Dockerfile

shell
FROM alpine:3.19

LABEL maintainer="liuzhw"

# 安装 nginx(Alpine 官方源)
RUN apk add --no-cache nginx wget

# 声明端口
EXPOSE 80

# 前台运行 nginx
ENTRYPOINT ["nginx", "-g", "daemon off;"]

需要注意的是,通过docker-compose.yml 编排的容器,他们网络都是互通的。你可以用下面的方法测试

shell
docker exec -it nginx-app curl http://nginx-proxy:80

如有转载或 CV 的请标注本站原文地址