常用的 docker 命令
- 安装
docker环境 docker --help查看 docker 命令提示docker ps -a查看所有运行的容器docker images查看所有的- 配置 Dockerfile 文件
- 查看容器运行日志:
docker logs -f [containerId]
操作步骤
要在Docker中部署Egg.js应用程序,按照以下步骤进行操作:
- 首先,确保你的机器上已经安装了Docker和Docker Compose。
- 在你的Egg.js项目根目录下创建一个Dockerfile文件,内容如下:
# 使用Node.js作为基础镜像
FROM node:17
# 设置工作目录
WORKDIR /app
# 将依赖文件拷贝到工作目录
COPY package*.json ./
# 安装依赖
RUN npm install
# 拷贝应用程序代码到工作目录
COPY . .
# 暴露应用程序运行的端口(如果有需要)
EXPOSE 7001
# 运行启动命令
CMD ["npm", "start"]
- 创建一个docker-compose.yml文件,内容如下:
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- 7001:7001
volumes:
- .:/app
- 在终端中进入到项目根目录,执行以下命令来构建和启动容器:
docker-compose up -d
或者
docker-compose up -d --build
注意事项
在第二步中,一定要注意node的版本,最开始我这就踩了坑,在package.json里面看看node的要求,我刚开始没注意看,在dockerfile里面只装到14,导致启动不成功。
因为我的文件夹是装了依赖,最后简化dockerfile的文件只需要这样~
FROM node:17
WORKDIR /app
CMD ["npm", "run", "dev"]
注意!CMD是启动代码的命令,每个人根据自己的项目填写~
WORKDIR表示的是工作目录(在docker容器里面的目录)
再解释一下docker-compose.yml文件里面的volumes:.:/app
这是一个Docker Compose文件的volumes部分。该部分指定了容器和主机之间共享的目录或文件的路径。在这个例子中,当前目录(.)被映射到了容器内的/app目录,表示容器可以访问主机上该目录下的文件和文件夹。这意味着如果你在主机上修改了/app目录下的文件,容器内的/app目录中的相应文件也会被更新。
这样就是跑起来啦!
刚开始看了网上的教程,很多都是只写dockerfile一个文件,虽然那样也行,但是个人感觉比较麻烦,命令行敲的也更多wwwu~最后再解释一下docker-compose.yml文件的应用啦~我不管!!
docker-compose.yml文件的应用
创建一个docker-compose.yml文件通常在以下情况下是有用的:
- 多容器应用程序:当你的应用程序由多个服务或容器组成时,使用Docker Compose可以更方便地定义、管理和部署这些容器。通过编写docker-compose.yml文件,你可以指定每个容器的配置、网络设置以及它们之间的关联。
- 简化本地开发环境:使用Docker Compose可以帮助你在本地轻松地创建和管理开发环境。通过定义容器、卷、网络等相关配置,你可以快速搭建开发所需的服务,并保持这些服务的一致性。
- 批量化部署:如果你需要批量部署多个相似的应用程序实例,Docker Compose可以帮助你进行快速且可重复的部署。通过在docker-compose.yml文件中定义应用程序的配置和参数,你可以轻松地创建和管理多个实例。
- 管理生产环境:尽管Docker Compose主要用于本地开发和测试,但在某些情况下也可以用于管理生产环境中的容器化应用程序。例如,你可以使用Docker Compose来定义和管理生产环境中的多个服务,确保它们以正确的顺序启动和运行。
总的来说,创建一个docker-compose.yml文件可以帮助你更简洁、可维护地定义和管理容器化应用程序的组件,提供了一种便捷的方式来配置和部署多个相关的容器。