index.html不显示,(nodejs / docker / nginx)

wkftcu5l  于 2023-08-03  发布在  Nginx
关注(0)|答案(1)|浏览(107)

大家晚上好:
我正在学习如何使用nginx和nodejs构建docker容器。
我现在被卡住了,我到了一个点,一切都在工作,但index.html页面没有显示nodeJS容器推送的内容。

version: '3.8'

services:
  nginx:
    image: arm64v8/nginx
    container_name: nginx
    restart: unless-stopped
    ports:
      - "80:80"
      - "433:433"
    volumes:
      - /home/user/setup-ssl-nginx-docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - node_app

  node_app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: node_app
    restart: unless-stopped
    ports:
        - "5001:5001"
    volumes:
        - .:/node-1

字符串
docker-compose.yml

server{
    listen 80;
    server_name domain.com;

    location / {
        autoindex on;
        proxy_pass http://node_app:5001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}


nginx.conf

FROM node
WORKDIR /app
COPY package.json ./
RUN npm install express
COPY . . 
EXPOSE 5001
CMD ["node", "app.js"]


停靠文件

const express = require("express")
const app = express();
const path = require(`path`);

app.get('/', (req, res) => {
    res.sendFile(__dirname + "/index.html");
})

app.get('app', (req, res) => {
    return res.status(200).send({ "message": "App Response from Server-1"});
}); 

const port = 5001

app.listen(port, () => console.log(`server is Up & running on port ${port}`))


app.js文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p>Welkom</p>
</body>
</html>


index.html
我得到一个布兰科index.html,如果我运行docker log,它显示两个容器都运行良好的NodeJS和nginx。
如果我做一个wget domain.com我也得到空白的html回来。

daupos2t

daupos2t1#

我不完全确定,但也许给予试试。
您可以将docker-compose.yml调整为:

version: '3.8'

services:
  nginx:
    image: arm64v8/nginx
    container_name: nginx
    restart: unless-stopped
    ports:
      - "80:80"
      - "433:433"
    volumes:
      - /home/user/setup-ssl-nginx-docker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - node_app
    networks:    # Add this
      - net_nginx

  node_app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: node_app
    restart: unless-stopped
    expose:    # EDIT THIS
        - 5001    # EDIT THIS
    volumes:
        - .:/node-1
    networks:    # Add this
      - net_nginx

networks:    # Add this
  net_nginx:

字符串
我的想法是,使用ports: -5001:5001,您只需将此端口暴露给主机。因此,您可以在机器的端口5001上访问它。我不知道你是否真的可以通过这种方式从另一个Docker容器访问这个端口。
因此,我们不使用ports,而是使用expose,将给定端口暴露给容器所连接的所有内部Docker网络。因此,我们将容器与nginx容器一起放置在net_nginx网络中,因此nginx能够找到容器并通过给定端口访问它。

相关问题