docker部署详解

138 阅读3分钟

常用的 docker 命令

  • 安装 docker 环境
  • docker --help 查看 docker 命令提示
  • docker ps -a 查看所有运行的容器
  • docker images 查看所有的
  • 配置 Dockerfile 文件
  • 查看容器运行日志:docker logs -f [containerId]

操作步骤

要在Docker中部署Egg.js应用程序,按照以下步骤进行操作:

  1. 首先,确保你的机器上已经安装了Docker和Docker Compose。
  2. 在你的Egg.js项目根目录下创建一个Dockerfile文件,内容如下:
# 使用Node.js作为基础镜像
FROM node:17

# 设置工作目录
WORKDIR /app

# 将依赖文件拷贝到工作目录
COPY package*.json ./

# 安装依赖
RUN npm install

# 拷贝应用程序代码到工作目录
COPY . .

# 暴露应用程序运行的端口(如果有需要)
EXPOSE 7001

# 运行启动命令
CMD ["npm", "start"]

  1. 创建一个docker-compose.yml文件,内容如下:
version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 7001:7001
    volumes:
      - .:/app

  1. 在终端中进入到项目根目录,执行以下命令来构建和启动容器:
docker-compose up -d

或者

docker-compose up -d --build

注意事项

在第二步中,一定要注意node的版本,最开始我这就踩了坑,在package.json里面看看node的要求,我刚开始没注意看,在dockerfile里面只装到14,导致启动不成功。

image.png 因为我的文件夹是装了依赖,最后简化dockerfile的文件只需要这样~

FROM node:17 
WORKDIR /app
CMD ["npm", "run", "dev"] 

注意!CMD是启动代码的命令,每个人根据自己的项目填写~

WORKDIR表示的是工作目录(在docker容器里面的目录)

再解释一下docker-compose.yml文件里面的volumes:.:/app

这是一个Docker Compose文件的volumes部分。该部分指定了容器和主机之间共享的目录或文件的路径。在这个例子中,当前目录(.)被映射到了容器内的/app目录,表示容器可以访问主机上该目录下的文件和文件夹。这意味着如果你在主机上修改了/app目录下的文件,容器内的/app目录中的相应文件也会被更新。

image.png 这样就是跑起来啦!

刚开始看了网上的教程,很多都是只写dockerfile一个文件,虽然那样也行,但是个人感觉比较麻烦,命令行敲的也更多wwwu~最后再解释一下docker-compose.yml文件的应用啦~我不管!!

docker-compose.yml文件的应用

创建一个docker-compose.yml文件通常在以下情况下是有用的:

  1. 多容器应用程序:当你的应用程序由多个服务或容器组成时,使用Docker Compose可以更方便地定义、管理和部署这些容器。通过编写docker-compose.yml文件,你可以指定每个容器的配置、网络设置以及它们之间的关联。
  2. 简化本地开发环境:使用Docker Compose可以帮助你在本地轻松地创建和管理开发环境。通过定义容器、卷、网络等相关配置,你可以快速搭建开发所需的服务,并保持这些服务的一致性。
  3. 批量化部署:如果你需要批量部署多个相似的应用程序实例,Docker Compose可以帮助你进行快速且可重复的部署。通过在docker-compose.yml文件中定义应用程序的配置和参数,你可以轻松地创建和管理多个实例。
  4. 管理生产环境:尽管Docker Compose主要用于本地开发和测试,但在某些情况下也可以用于管理生产环境中的容器化应用程序。例如,你可以使用Docker Compose来定义和管理生产环境中的多个服务,确保它们以正确的顺序启动和运行。

总的来说,创建一个docker-compose.yml文件可以帮助你更简洁、可维护地定义和管理容器化应用程序的组件,提供了一种便捷的方式来配置和部署多个相关的容器。