Dockerfile和docker-compose

发布时间:2026/8/4 14:57:29
Dockerfile和docker-compose Dockerfile基础Dockerfile是用来自动化创建Docker镜像的脚本文件通过编写Dockerfile文件可以自动化构建过程减少手动操作确保环境一致性在Dockerfile中常见的命令有FROM(指定基础镜像)、RUN(执行命令)、COPY/ADD(拷贝文件)、WORKDIR(设置工作目录)、CMD/ENTRYPOINT(指定容器启动时的命令)、EXPOSE(指定暴露的端口)、ENV(设置环境变量)。列如下方是一个Dockerfile示例# 第一阶段构建阶段FROM node:14 AS builder WORKDIR /app COPY..RUNnpminstall# 第二阶段运行阶段FROM node:14 WORKDIR /app COPY--frombuilder /app /app CMD[npm,start]配置好dockerfile脚本后就可以通过一下命令构建镜像并启动容器# 构建镜像llmops-ui:1.0.1dockerbuild-fllmops-ui/Dockerfile-tllmopps-ui:1.0.1 llmops-ui/# 运行构建好的镜像dockerrun-d-p5173:80--namellmops-ui llmops-ui:1.0.1# 进入到Docker容器内部dockerexec-itllmops-ui /bin/sh但是在整个项目中会用到多个Docker容器如果逐个容器去启动运行并且有可能容器之间会有依赖关系需要按照特定的顺序启动手动操作起来非常麻烦这时可以使用docker-compose工具来定义和运行多容器docker-compose基础Docker Compose是一个用于定义和运行多容器Docker应用的工具。使用Compose,我们可以通过一个YAML配置文件docker-compose.yml来定义所有的服务、网络和卷等。然后通过一个人简单的命令docker-compose up, 我们就能够启动所有相关的容器服务通过docker-compose down 就可以一键卸载所有关联的容器服务。要想使用Docker Compose 工具需要配置一个docker-compose.yaml 文件该配置文件用于描述容器的服务、网络、卷等。我们通过YAML格式定义来定义该文件列如下方是一个docker-compose.yaml文件的基本实例version:3# 定义 compose 文件的版本services: web: image: nginx# 使用nginx官方镜像ports: -8080:80# 将容器的80端口映射到宿主机的8080端口networks: - my_network db: image: postgres:alpine# 使用postgres官方镜像environment: POSTGRES_PASSWORD: example# 设置环境变量networks: - my_network networks: my_network:#自定义网格定义driver: bridge# 使用bridge网络驱动编写 docker-compose.yaml配置也非常简单常见的配置如下version: 指定docker-compose.yml的版本。通常我们使用的是3.x版本系列services: 定义了所有的容器服务。每个服务代表一个容器。服务可以是镜像的引用也可以通过build来从Dockerfile构建镜像。image: 指定容器使用的镜像。可以是从Docker Hub或其他仓库拉取的镜像build: 指定构建镜像的上下文路径如果是自己编写Dockerfile构建镜像时需要指定environment: 定义环境变量这些环境变量将传递给容器volumes: 挂载宿主机目录或者Docker卷到容器内部常用于持久化数据ports: 定义容器端口与宿主机端口的映射networks: 定义服务之间的网络配置每个服务可以连接到一个或多个网络volumes: 定义数据卷用于容器之间共享数据或持久化数据除了配置项之外docker-compose还通过一系列的命令来执行相应的服务命令如下启动服务docker-composeup该命令会启动docker-compose.yml中定义的所有服务。如果容器镜像不存在会自动从Docker Hub拉取或根据Dockerfile构建镜像。如果只想启动后台容器不阻塞终端可以加上 -d 参数docker-composeup-d停止服务docker-composedown该命令停止并删除所有由docker-compose.yml启动的容器、网络和卷。只停止容器但不删除容器可以使用docker-composestop查看容器日志docker-composelogs该命令用于查看所有服务的日志。如果只想查看某个服务的日志可以指定服务名docker-composelogs web重启服务docker-composerestart该命令用于重启所有服务的容器如果只重启某一个服务可以指定服务名docker-composerestart web查看容器状态docker-composeps该命令用于列出当前Compose环境中的容器状态它会显示容器的状态、端口映射等信息。构建镜像如果服务使用build指令来构建镜像可以使用docker-composebuild该命令会根据docker-compose.yml文件中的配置重新构建镜像运行单个命令有时候你可能需要进入某个服务器。执行一些命令比如查看容器内部的日志或者执行数据库操作等。可以使用docker-composeexecservice_namecommand列如要进入web容器的终端docker-composeexecwebbash