【问题标题】:Deploy Reactapp using Docker & SSL使用 Docker 和 SSL 部署 React App
【发布时间】:2021-11-08 19:23:17
【问题描述】:

Dockerfile

Docker 运行命令:docker run -itd -p 8080:80 prod

FROM node:16-alpine as builder
WORKDIR /app
COPY package.json ./
COPY package-lock.json ./
COPY . /app/

RUN npm install --silent
RUN npm install react-scripts@4.0.3 -g --silent
RUN npm run build
# production environment
FROM nginx:1.21.1-alpine
COPY --from=builder /app/build /usr/share/nginx/html

EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

defalut.conf 文件

server {

listen 443 ssl default_server;
listen [::]:443 ssl default_server;

ssl_certificate /etc/nginx/sites-available/cert.crt;
ssl_certificate_key /etc/nginx/sites-available/ssl.key;

server_name ipaddress;

location / {
proxy_pass http://localhost:8080;
try_files $uri /index.html;
}

我无法在 https 中看到我的 ip 地址上运行的 index.html 文件。它与http://ipaddress:8080 一起工作正常。以上是 DockerFile 和 default.conf 文件的配置文件。服务器日志中没有显示任何内容。

我想知道上面的配置是正确的还是如何使用 Docker & SSL & Nginx 部署 react-app

【问题讨论】:

  • 您在浏览器中看到了什么?您能否在问题中添加您正在使用的docker run 命令?还是docker-compose.yml的内容?
  • Docker 运行命令:docker run -itd -p 8080:80 prod
  • proxy_pass 行似乎错误; localhost是Nginx容器,这里的React应用只是静态文件。

标签: docker nginx docker-compose dockerfile ssl-certificate


【解决方案1】:

通过查看您的 cmets,您的端口配置似乎不正确,在 NginX 中端口侦听设置为侦听端口 443,但您的 docker 端口配置使用端口 80 作为主机端口。假设 Node 服务器正在监听端口8080,docker run 应该是这样的

$ docker run -itd -p 443:443 prod

然后尝试 https://ipaddress ,根据证书设置,您应该会在浏览器中看到警告(如果证书不完全受信任,您可能需要将其添加为例外),或者查看正确的内容。

【讨论】:

    猜你喜欢
    • 2020-01-31
    • 2020-08-17
    • 2023-03-04
    • 1970-01-01
    • 2019-07-11
    • 2019-01-21
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多