下面是一个简单的docker-compose.yml文件示例,用于部署一个使用Node.js和npm的应用程序。这个示例假设你已经有一个Dockerfile在你的项目目录中,用于构建你的Node.js应用程序。
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
volumes:
- .:/app
- /app/node_modules
environment:
NODE_ENV: production
command: npm start
解释一下这个docker-compose.yml文件中的各个部分:
version: 指定了docker-compose.yml文件格式的版本。3.8是当前支持的一个版本。
services: 定义了你的应用程序中的服务。在这个例子中,我们只有一个名为app的服务。
build: 指定了Docker镜像的构建上下文路径。.表示Dockerfile位于当前目录。
ports: 映射容器端口到宿主机端口。在这个例子中,我们将容器的3000端口映射到宿主机的3000端口。
volumes: 挂载卷。这里我们做了两件事:
将当前目录(项目代码)挂载到容器的/app目录。
创建一个名为/app/node_modules的匿名卷,以保持node_modules目录的内容不受宿主机目录影响,这是因为宿主机和容器可能会有不同的操作系统和架构,导致二进制兼容性问题。
environment: 设置环境变量。在这个例子中,我们将NODE_ENV设置为production。
command: 覆盖容器启动后默认执行的命令。在这个例子中,我们使用npm start来启动