记录一次docker部署过程和一些常用的docker指令

有个类似 "进销存+POS(收银)一体化软件" 的项目,后台管理框架用了 Admin.NET 开发框架,

门店营业员端设计为APP,前后端分离架构,开发语言 .NET 8

整个系统包括前端APP,前端接口,后台界面,后台接口,另外配合生成产品码和产品码标签打印,设计了一个后台job程序。

这么多应用,部署在不同docker里,理想的形式是采用docker-compose来进行管理和编排。(目前还没有牵扯到集群等概念),同时为了更灵活和满足某些定制化的需求,给需要的应用配置了一个Dockerfile文件,配合着docker-compose来混合管理。

本篇目的也很简单,纪录一些常用的指令和简单的配置过程(命令和配置文件都尽量按照能跑起来的最小化配置)

一:服务器文件夹结构

二:举例某个应用下的Dockerfile文件(项目里其他应用和此文件配置大同小异)

cs 复制代码
# 使用 .NET 8 运行时镜像

FROM mcr.microsoft.com/dotnet/aspnet:8.0

# 指的是docker容器里的工作目录

WORKDIR /app/uijk

# 复制当前目录所有文件到容器

# COPY . .

# 暴露端口

ENV ASPNETCORE_URLS=http://+:你的端口

# 暴露 端口  你的项目端口

EXPOSE 你的端口

# 启动应用 - 请确认 Shop.dll 是正确的文件名

ENTRYPOINT ["dotnet", "Shop.dll"]

三:docker-compose.yml文件

cs 复制代码
services:
  ui-jk:
    build:
      context: ./uijk   #文件夹地址 注意前提
      dockerfile: Dockerfile  #参照的Dockerfile文件配置进行 build
    container_name: ui-jk  #容器名称
    ports:
      - "xxx:xxx"  # 暴露的端口 
    restart: unless-stopped
    volumes:   # 卷挂载
      - /data/uijk:/app/uijk
    environment:  # 环境 这里是将此服务注册到consul注册中心去 没有的话可以不用
      - CONSUL_ADDRESS=http://consul:xxxx
    # depends_on:  # 要等consul服务启动完成  consul服务我这里拿掉了
     # - consul
    networks:
      - app_network
  admin-job:  # job 没有端口 这里没配置端口
    build:
      context: ./adminjob
      dockerfile: Dockerfile
    container_name: adminjob
    volumes:
      - /data/adminjob:/app/adminjob
    networks:
      - app_network
  nginx-gateway: # 这是配置的nginx 管理后台前端页面 依赖于nginx.conf配置文件
    image: nginx:alpine
    container_name: nginx-gateway
    restart: unless-stopped
    ports:
      - "xxxx:xxx"
    volumes:
      - /data/adminweb/dist:/usr/share/nginx/html:ro
      - /data/adminweb/dist/nginx.conf:/etc/nginx/nginx.conf:ro
      - /data/adminnet/wwwroot/uploads:/app/adminnet/wwwroot/uploads:ro
    networks:
      - app_network

# ========== 定义网络 ==========
networks:
  app_network:
    driver: bridge

四:启动和其他常用指令汇总

cs 复制代码
# 如果修改了 配置文件或者不需要从构建缓存中构建(需要重新构建)

docker compose  up -d --build

# 如果代码没变  配置文件没变 不需要重新构建

docker compose  up -d 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>常用命令>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

# 查看容器里的日志

docker logs -f 容器名称


# 停止所有运行中的容器

docker stop $(docker ps -q)

#  停止所有容器(包括运行中和已停止的)

docker stop $(docker ps -aq)

# 删除所有容器(包括运行中的,会强制停止)

docker rm -f $(docker ps -aq)

# 先停止再删除(推荐)

docker stop $(docker ps -q) 2>/dev/null

docker rm $(docker ps -aq) 2>/dev/null

# 删除所有镜像

docker rmi -f $(docker images -q)

# 删除无标签的镜像

docker image prune -f

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>下面的指令尽量慎用>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

# 清理网络

docker network prune -f

# 清理卷(会删除数据)

docker volume prune -f

# 清理构建缓存

docker builder prune -f

# 系统级清理(最彻底)

docker system prune -a --volumes -f
相关推荐
Sayai2 小时前
Neo4j 图数据质量检查实战:环路检测、孤立节点与连通分量,两条 Cypher 引出的数据体检清单(含变长路径性能陷阱)
运维·neo4j·图数据库·数据质量·cypher
Elastic 中国社区官方博客3 小时前
更少的位数,相同的召回率:DiskBBQ 更保守的自动校准扫描
大数据·运维·开发语言·人工智能·elasticsearch·搜索引擎
方便面不加香菜3 小时前
Docker Volume -- 管理卷Volume详解
运维·docker·容器
沫璃染墨4 小时前
从零入门计算机网络系列(十八):TCP连接管理详解——从三次握手与四次挥手到TIME_WAIT机制
运维·服务器·网络·c++·网络协议·tcp/ip·tcp
Felven4 小时前
华为鲲鹏920s芯片serdestool工具使用说明
linux·运维·服务器·华为·鲲鹏920·serdestool
江湖有缘4 小时前
Docker实战 | 使用Docker部署lemonitor镜像站点列表程序
运维·docker·容器
莫晓燚4 小时前
mall 电商项目完整部署---实战
linux·运维·docker·容器
爱和冰阔落5 小时前
【Linux网络】JsonCpp 怎么实现序列化?从 Request/Response 到网络计算器消息设计
linux·运维·网络·php
Decay__5 小时前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构
我是koten11 小时前
【运维杂谈】K8s遇到Terminating的名称空间删除不了怎么办?(解决方案亲测有效)
linux·运维·服务器·云原生·kubernetes·k8s·名称空间