我有一个这样的文件夹结构: 根/服务器 根/前端 根目录/start.sh
其中 start.sh 是这样的:
#!/bin/sh
cd server
npm run build;
cd ../client;
npm run build;
mv -R build ../server/client;
cd ../server
npm run start;
所以我构建了服务器,然后是客户端,我将客户端构建的文件移动到我的服务器应用程序中,然后运行该应用程序...有没有办法使用 Docker 镜像执行类似的操作?
最佳答案
是的,您可以使用 .sh 脚本执行的大部分操作都可以通过构建 docker 镜像来完成。然而,docker 镜像通常遵循单一责任原则,所以我不会在单个镜像中耦合 FE 和 BE(如果它们是两个不同的应用程序),而是我会做 2 个不同的应用程序,然后使用 docker compose ,您将能够管理您的多容器应用程序
让我们看一个非常简单的例子
后端:(服务器目录中的 Dockerfile)
FROM node:xxx (use your development version)
WORKDIR /server
COPY . /server/
RUN npm run build
EXPOSE 3000
CMD npm start
前端:(客户端目录中的 Dockerfile)
FROM node:xxx (use your development version)
WORKDIR /client
COPY . /client/
RUN npm run build
EXPOSE 80
CMD npm start
docker compose(在服务端和客户端的父目录下
version: 3
services:
server:
build: ./server
container_name: server
ports:
- 3000:3000
client:
build: ./client
container_name: client
ports:
-80:80
然后使用 docker-compose up --build 您可以随时构建和运行容器,请参阅其他命令的文档(stop、kill、remove ecc)
注意:我都是“手工”编写的,可能存在一些拼写错误或语法错误。抱歉,我会修复的!
关于node.js - 为客户端和服务器创建docker文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53507378/