node.js - 为客户端和服务器创建docker文件

标签 node.js reactjs docker

我有一个这样的文件夹结构: 根/服务器 根/前端 根目录/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/

相关文章:

node.js - 使用 NodeJS(服务器端)从另一个帐户访问 AWS Cognito 池

node.js - 在 Node 中解析ByteBuffer?

reactjs - React - 违反不变性 : Maximum update depth exceeded

javascript - React - 如何过滤列表而不丢失数据?

Dockerfile 覆盖 ARG 值

docker - 如何让环境变量持久化到导入的 Docker 镜像中

javascript - 如何在 Sails.js 的所有页面中监听登录用户的套接字更新?

javascript - Socket.io 和 Node/Express - 超出最大调用堆栈大小

docker-compose 不接受我的卷声明

node.js - Mean.JS 中的路由