繁体   English   中英

尝试使用docker使Nginx代理在node.js的端口80和443上工作

[英]Trying to get nginx proxy to work on port 80 and 443 for node.js with docker

因此,我尝试按照此处的示例操作以处理所有其他容器的Nginx代理容器。 我尝试遵循配置环境变量的格式,以便站点通过nginx-proxy进行工作。 到目前为止,如果我使用80或443以外的端口,则只能部署一个站点。我想知道我是否可以得到任何帮助,因此我在下面粘贴了两个文件。

Docker文件

FROM node:carbon                                                                                                      
# Create app directory
WORKDIR ./home/username/website/production

COPY package*.json ./

RUN npm install

# Bundle app source
COPY . .

EXPOSE 8080
CMD [ "npm", "start" ]

docker-compose.yml

version: "3"                                                                                                          
    services:
        website:
            build: .
            volumes:
                - .:/home/user/website
                - ./home/user/website/node_modules
            ports:
                - "8080:8080"
            expose:
                - 80
            environment:
                VIRTUAL_HOST: domain.com
                LETSENCRYPT_HOST: domain.com
                LETSENCRYPT_EMAIL: domain.com
    networks:
        default:
            external:
                name: nginx-proxy      

我尝试在端口80和443上侦听。但是,nginx返回503错误。 所以我想知道是否有人可以阐明应该如何配置它。

因此,我得到了它部署两个单独的容器,一个作为domain.com,另一个作为subdomain.domain.com,两个容器都侦听端口80。该站点甚至默认为https,就像nginx可以处理那样。 我没有使用docker-compose.yml文件,而是按照github页面而不是使用普通docker的博客的说明重命名了nginx-proxy。 之后,我使用它们的格式进行部署,如下所示:

docker run --detach \
    --name your-proxyed-app
    --env "VIRTUAL_HOST=subdomain.yourdomain.tld" \
    --env "LETSENCRYPT_HOST=subdomain.yourdomain.tld" \
    --env "LETSENCRYPT_EMAIL=mail@yourdomain.tld" \
    nginx

这些可在其Wiki上找到。 我认为至少在我对Docker本身有更多了解之前,我将暂时避免使用docker-compose,但是如果有人可以阐明为什么docker-compose设置不起作用,将不胜感激。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM