如何使用 docker 和 serve -s build 部署 React 应用程序

nac*_*cho 2 deployment docker reactjs

到目前为止,我已经构建了映像并将其部署到 AWS EC2。但我想用

serve -s build
Run Code Online (Sandbox Code Playgroud)

在生产模式下为应用程序提供服务。我在本地做的,显然一切似乎都很好..我明白了..

?????????????????????????????????????????????????????? ?? ? ? ? 服务!? ? ? ? - 本地:http://localhost:5000 ? ? - 在您的网络上:http : //192.168.1.91 : 5000 ?? ? ? 将本地地址复制到剪贴板!? ? ? ?????????????????????????????????????????????????????? ??

然后页面进入..但是当我尝试向 api 发出请求时,我得到 404。

我想知道 react 构建是如何工作的,以及我需要做什么才能将其置于生产模式。还有,dist 文件夹是干什么用的?

这是我的 Dockerfile:

FROM node

#Create app directory
WORKDIR /app

# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

#Install dependencies
RUN npm install
RUN npm install react-scripts@3.4.1 -g --silent


#Copy app's source code inside the Docker image
COPY . .

#Expose the app's port
EXPOSE 3000

#Run the app when the container is ran
CMD ["npm", "start""]
Run Code Online (Sandbox Code Playgroud)

谢谢!

小智 5

这是我运行时使用的 Dockerfile serve -s build

# pull official base image
FROM node:13.12.0-alpine

# set working directory
WORKDIR /app

# Copies package.json and package-lock.json to Docker environment
COPY package*.json ./

# Installs all node packages
RUN npm install

# Copies everything over to Docker environment
COPY . .

# Build for production.
RUN npm run build --production

# Install `serve` to run the application.
RUN npm install -g serve

# Uses port which is used by the actual application
EXPOSE 5000

# Run application
#CMD [ "npm", "start" ]
CMD serve -s build
Run Code Online (Sandbox Code Playgroud)

我只是在 npm start(调试)和服务(用于生产)之间切换。