docker-compose 构建项目
1.创建一个net7 webapi 项目
配置docker-compose.yml 支持


Deploy 中放的docker-compose.yml 文件

2.dockerfile文件

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 8001
#配置运行端口
ENV ASPNETCORE_ENVIRONMENT=Development
ENV ASPNETCORE_URLS http://+:8001
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["Dev.DockerComposeTest.csproj", "./"]
RUN dotnet restore "./Dev.DockerComposeTest.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "Dev.DockerComposeTest.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Dev.DockerComposeTest.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Dev.DockerComposeTest.dll"]
#ENTRYPOINT ["dotnet", "Dev.DockerComposeTest.dll","--urls=http://*:8001"]
docker-compose.yml 文件

----------------------续更改
version: '3.4' services: docker-compose-demo01: build: context: ../Dev.DockerComposeTest/ dockerfile: Dockerfile image: docker-compose-demo01 container_name: docker-compose-demo01 restart: always volumes: - ./Logs:/app/Logs/ #映射日志路径 日志会自动映射到容器外 最好是静态资源 environment: # 设置环境变量,相当于docker run命令中的-e TZ: Asia/Shanghai LANG: en_US.UTF-8 #ASPNETCORE_ENVIRONMENT: Development #要有空格 #ASPNETCORE_URLS: http://+:5011 #environment: # 设置环境变量,相当于docker run命令中的-e #- ASPNETCORE_ENVIRONMENT=Development #- ASPNETCORE_URLS=http://+:5009 ports: - "8001:8001" #选择网络 networks: - docker-compose-demo-net01 networks: docker-compose-demo-net01: #driver: "bridge" external: false #使用docker-compose批量运行镜像为容器,默认会新建网络,设置为true是不用默认新建网络,使用自定义网络 volumes: Logs: {}
----------------续更改
version: '3.4' services: docker-compose-demo01: build: context: ../Dev.DockerComposeTest/ dockerfile: Dockerfile image: docker-compose-demo01 container_name: docker-compose-demo01 restart: always environment: # 设置环境变量,相当于docker run命令中的-e TZ: Asia/Shanghai LANG: en_US.UTF-8 #ASPNETCORE_ENVIRONMENT: Development #要有空格 #ASPNETCORE_URLS: http://+:5011 #environment: # 设置环境变量,相当于docker run命令中的-e #- ASPNETCORE_ENVIRONMENT=Development #- ASPNETCORE_URLS=http://+:5009 ports: - "8001:8001" #选择网络 networks: - docker-compose-demo-net01 networks: docker-compose-demo-net01: driver: "bridge"
docker-compose.yml 里面有多个service
docker-compose up 镜像名称 -d
选项说明:
-d 在后台运行服务容器。
--no-color 不使用颜色来区分不同的服务的控制台输出。
--no-deps 不启动服务所链接的容器。
--force-recreate 强制重新创建容器,不能与 --no-recreate 同时使用。
--no-recreate 如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用。
--no-build 不自动构建缺失的服务镜像。
-t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。
————————————————
version: '3.4' services: docker-compose-demo01: build: context: ../Dev.DockerComposeTest/ dockerfile: Dockerfile image: docker-compose-demo01 container_name: docker-compose-demo01 restart: always environment: # 设置环境变量,相当于docker run命令中的-e TZ: Asia/Shanghai LANG: en_US.UTF-8 #ASPNETCORE_ENVIRONMENT: Development #ASPNETCORE_URLS: http://+:5011 #environment: # 设置环境变量,相当于docker run命令中的-e #- ASPNETCORE_ENVIRONMENT=Development #- ASPNETCORE_URLS=http://+:5009 ports: - "8001:8001" #选择网络 networks: - docker-compose-demo-net01 docker-compose-demo02: build: context: ../Dev.DockerComposeTest/ dockerfile: Dockerfile image: docker-compose-demo02 container_name: docker-compose-demo02 restart: always environment: # 设置环境变量,相当于docker run命令中的-e TZ: Asia/Shanghai LANG: en_US.UTF-8 #ASPNETCORE_ENVIRONMENT: Development #ASPNETCORE_URLS: http://+:5012 #environment: # 设置环境变量,相当于docker run命令中的-e #- ASPNETCORE_ENVIRONMENT=Development #- ASPNETCORE_URLS=http://+:5009 ports: - "8002:8002" #选择网络 networks: - docker-compose-demo-net01 networks: docker-compose-demo-net01: driver: "bridge"
docker-compose.yml 操作方法
获得一个命令的帮助
docker-compose 命令 --help
构建并启动所有容器,如果镜像存在就重新构建
docker-compose up -d --build
启动所有服务
docker-compose up -d
构建启动nignx容器
docker-compose up -d nginx
-f 指定使用的Compose配置文件启动,默认为docker-compose.yml,可以多次指定。
docker-compose -f docker-compose.yml up -d
运行一个服务,并在服务上执行一个命令
docker-compose run 容器id或容器名 ip addr
登录到nginx容器中
docker-compose exec nginx bash
此命令将会停止 up 命令所启动的容器,并移除网络
docker-compose down
列出项目中运行的所有容器
docker-compose ps
列出项目中运行及未运行的所有容器
docker-compose ps -a
列出所有运行的服务容器
docker-compose ls
列出所有服务容器(包括未运行的容器)
docker-compose ls -a
重新启动nginx容器
docker-compose restart nginx
构建镜像
docker-compose build nginx
不带缓存的构建
docker-compose build --no-cache nginx
查看各个服务容器内运行的进程
docker-compose top
查看nginx的实时日志
docker-compose logs -f nginx
列出 Compose 文件包含的镜像
docker-compose images
验证文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose config
以json的形式输出nginx的docker日志
docker-compose events --json nginx
暂停nignx容器
docker-compose pause nginx
恢复ningx容器
docker-compose unpause nginx
删除容器(删除前必须关闭容器,执行stop)
docker-compose rm nginx
强制删除容器(不必先关闭容器)
docker-compose rm -f nginx
停止nignx容器
docker-compose stop nginx
启动nignx容器
docker-compose start nginx
重启项目中的nignx容器
docker-compose restart nginx
下载依赖的镜像
docker-compose pull
推送服务依的镜像
docker-compose push
设置指定服务运行的容器个数。通过service=num的参数来设置数量
docker-compose scale web=3 db=2
查看版本信息
docker-compose version

浙公网安备 33010602011771号