记录一次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
相关推荐
SkyWalking中文站1 天前
认识 Horizon UI · 6/17:Trace 探索器
运维·监控·自动化运维
程序员老赵1 天前
Docker 部署 Redmine:老牌开源项目管理部署实测记录
docker·开源·团队管理
程序员老赵1 天前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
火车叼位1 天前
写给初级开发者:SSL、SSH、HTTPS 与证书体系全解析
运维
小猿姐2 天前
唯品会大规模数据库云原生实践:基于 KubeBlocks 管理数千实例的统一运维之路
运维·elasticsearch·云原生
SkyWalking中文站2 天前
认识 Horizon UI · 5/17:3D 基础设施地图
运维·监控·自动化运维
SkyWalking中文站3 天前
认识 Horizon UI · 1/17:SkyWalking 新一代可观测性控制台
运维·前端·监控
雪梨酱QAQ3 天前
Kubeneters HA Cluster部署
运维
lichenyang4533 天前
Docker 学习笔记(五):Docker Compose,用一个 YAML 启动前端、后端和 MongoDB
docker
lichenyang4533 天前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器