云部署: Docker的一些常用命令

docker重启nginx

要在Docker中重新启动Nginx容器,可以按照以下步骤进行操作:

  1. 首先,确保已经安装了Docker并且正在运行。如果没有安装,请根据所使用的操作系统版本参考官方文档进行安装。

  2. 打开命令行界面(Terminal)或者PowerShell等工具。

  3. 输入以下命令来查看当前正在运行的Docker容器列表:

    docker ps -a

    这将显示所有正在运行的容器及其相关信息。

  4. 从结果中找到名为"nginx"的容器ID或名称。通常情况下,该容器应该处于"Up"状态。

  5. 若要重新启动Nginx容器,可以使用以下命令:

    docker restart <container_id>

前台运行打包

docker-compose up

运行完成后大概率会报错,因为我们使用的mysql账号没有权限,所以需要进行设置

切换后台运行

arduino 复制代码
// Ctrl+C 终止程序后执行后台运行命令, 用于本地运行
docker-compose up -d

docker-compose up正常用来测试本地打包,和第一次构建redis、mysql容器,后续需要在本地运行开发模式只需保证redis、mysql容器正常运行即可,如需再次打包只需重新构建server容器即可

docker-compose up -d --force-recreate --no-deps --build --remove-orphans server_docker

本地开发模式只需关闭server容器,然后在项目内只需 start:dev即可

arduino 复制代码
docker stop server_docker
npm run start:dev

docker删除容器

把容器和镜像快速删除的方式:

docker-compose down --rmi all

要在Docker中删除容器,可以使用docker rm命令。

如果想要删除单个容器,只需指定容器的ID或名称作为参数传递给该命令即可。示例如下所示:

bash 复制代码
docker rm <container_id>

其中, <container_id> 是要删除的容器的ID或名称。

如果想要同时删除多个容器,可以将它们的ID或名称列表作为参数传递给该命令。示例如下所示:

bash 复制代码
docker rm container1 container2 container3 ...

这样就能同时删除多个容器了。

注意事项:

  • 当容器正在运行时无法直接删除,必须先停止容器后才能进行删除操作。
  • 若要永久性地删除容器及相关资源(包括存储卷),则应添加-v选项来删除与之关联的存储卷。示例如下所示:
bash 复制代码
docker rm -v <container_id>

Nest的docker-compose.yml

bash 复制代码
version: "3.0"

services: 
    # docker容器启动的redis默认是没有redis.conf的配置文件,所以用docker启动redis之前,需要先去官网下载redis.conf的配置文件
    redis_docker: # 服务名称
        container_name: redis_docker # 容器名称
        image: daocloud.io/library/redis:6.0.3-alpine3.11 # 使用官方镜像
        # 配置redis.conf方式启动
        # command: redis-server /usr/local/etc/redis/redis.conf --requirepass 123456 --appendonly yes # 设置redis登录密码 123456、--appendonly yes:这个命令是用于开启redis数据持久化
        # 无需配置文件方式启动
        command: redis-server --appendonly yes # 开启redis数据持久化
        ports:
            - 6379:6379 # 本机端口:容器端口
        restart: on-failure # 自动重启
        volumes:
            - ./deploy/redis/db:/data # 把持久化数据挂载到宿主机
            - ./deploy/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf  # 把redis的配置文件挂载到宿主机
            - ./deploy/redis/logs:/logs # 用来存放日志
        environment:
            - TZ=Asia/Shanghai  # 解决容器 时区的问题
        networks:
            - my-server_docker

    mysql_docker:
        container_name: mysql_docker
        image: daocloud.io/library/mysql:8.0.20 # 使用官方镜像
        ports: 
            - 3306:3306 # 本机端口:容器端口
        restart: on-failure
        environment: 
            MYSQL_DATABASE: docker_db
            MYSQL_ROOT_PASSWORD: 123456
            MYSQL_USER: docker_user
            MYSQL_PASSWORD: 123456
            MYSQL_ROOT_HOST: '%'
        volumes:
            - ./deploy/mysql/db:/var/lib/mysql # 用来存放了数据库表文件
            - ./deploy/mysql/conf/my.cnf:/etc/my.cnf # 存放自定义的配置文件
            # 我们在启动MySQL容器时自动创建我们需要的数据库和表
            # mysql官方镜像中提供了容器启动时自动docker-entrypoint-initdb.d下的脚本的功能
            - ./deploy/mysql/init:/docker-entrypoint-initdb.d/ # 存放初始化的脚本
        networks: 
            - my-server_docker

    server_docker: # nestjs服务
        container_name: server_docker
        build: # 根据Dockerfile构建镜像
            context: .
            dockerfile: Dockerfile
        ports: 
            - 9003:9003
        restart: on-failure # 设置自动重启,这一步必须设置,主要是存在mysql还没有启动完成就启动了node服务
        networks: 
            - my-server_docker
        depends_on: # node服务依赖于mysql和redis
            - redis_docker
            - mysql_docker

# 声明一下网桥  my-server。
# 重要:将所有服务都挂载在同一网桥即可通过容器名来互相通信了
# 如nestjs连接mysql和redis,可以通过容器名来互相通信
networks:
    my-server_docker:
相关推荐
子兮曰3 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰3 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万3 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝3 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋3 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁3 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95273 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大3 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师3 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学3 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端