我正在嘗試將 React 應用程式部署為 docker compose 的一部分。如果我在埠 3000 上部署它作業正常,但是當我使用埠 80 時,我無法連接。如果我npm start手動運行,任何一個配置都可以正常作業,但是當作為 docker 映像運行時,我無法訪問埠 80 版本。
我嘗試添加EXPOSE 80到 dockerfile,但似乎沒有任何效果。有人可以指出我的配置中的錯誤嗎?
Dockerfile:
FROM node:17-alpine
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json ./
COPY package-lock.json ./
RUN npm install
RUN npm install react-scripts@5.0.0 -g
COPY . .
CMD ["npm", "start"]
docker-compose.yaml
version: "3.8"
services:
solvle:
build: ./
container_name: solvle_c
ports:
- '8081:8081'
solvle_front:
build: ./solvle-front
container_name: solvle_front_c
ports:
- '80:80'
stdin_open: true
tty: true
package.json 片段
"scripts": {
"start": "set PORT=80 && react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
uj5u.com熱心網友回復:
對于 linux,您應該以這種方式設定埠:
"start": "export PORT=80 && react-scripts start"
另一種解決方案是在主目錄中創建一個名為.env(檔案)的檔案,并將PORT變數設定為所需的埠號:
PORT=80
另一種解決方案。
您可以使用cross-env來設定埠:
npm install cross-env -D
然后修改啟動腳本package.json:
"start": "cross-env PORT=80 react-scripts start",
ps
但是對于使用 docker 部署 react 應用程式,我建議您使用 nginx。
pps dockerfile 中
的EXPOSE指令實際上并沒有發布埠。它用作一種檔案。 公開檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/463282.html
上一篇:將運行限制為僅一個檔案不起作用
