云部署: 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正常用来测试本地打包,和第一次构建redismysql容器,后续需要在本地运行开发模式只需保证redismysql容器正常运行即可,如需再次打包只需重新构建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:
相关推荐
测试界柠檬几秒前
面试真题 | web自动化关闭浏览器,quit()和close()的区别
前端·自动化测试·软件测试·功能测试·程序人生·面试·自动化
多多*1 分钟前
OJ在线评测系统 登录页面开发 前端后端联调实现全栈开发
linux·服务器·前端·ubuntu·docker·前端框架
2301_801074152 分钟前
TypeScript异常处理
前端·javascript·typescript
小阿飞_3 分钟前
报错合计-1
前端
caperxi5 分钟前
前端开发中的防抖与节流
前端·javascript·html
霸气小男5 分钟前
react + antDesign封装图片预览组件(支持多张图片)
前端·react.js
susu10830189116 分钟前
前端css样式覆盖
前端·css
学习路上的小刘7 分钟前
vue h5 蓝牙连接 webBluetooth API
前端·javascript·vue.js
&白帝&7 分钟前
vue3常用的组件间通信
前端·javascript·vue.js
小白小白从不日白18 分钟前
react 组件通讯
前端·react.js