首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >作为代理的Nginx容器

作为代理的Nginx容器
EN

Stack Overflow用户
提问于 2018-06-09 00:44:35
回答 1查看 191关注 0票数 1

我最近开始学习Docker,我发现了一个名为Portainer的工具来管理Docker容器和镜像。我让它在远程服务器上作为容器运行,但它使用9000端口,我想将其更改为80,所以我考虑使用代理。我决定使用Nginx (我以前从未使用过)作为容器。我使用以下指令启动Nginx:

代码语言:javascript
复制
docker run --name mynginx2 -v /var/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -P -d nginx

/var/nginx/conf/nginx.conf文件如下所示:

代码语言:javascript
复制
events {
    worker_connections 1024;
}
http {
    server {
        location / {
            proxy_pass http://localhost:9000;
        }
    }
}

由于容器启动过程中出现错误,必须插入worker_connections。当我转到我的远程服务器的ip地址(比如:http://ip.of.my.server/)时,我希望Portainer会显示出来,但是什么也没有发生。我甚至没有得到响应的状态代码。

这里我漏掉了什么?

问候你,大牛

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-09 01:31:16

像这样运行您的portainer容器:

代码语言:javascript
复制
docker run -it --name myportainer -v "/var/run/docker.sock:/var/run/docker.sock" -d portainer/portainer

然后像这样运行nginx

代码语言:javascript
复制
docker run --name mynginx2 -v /var/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 80:80 -P -d --link myportainer:myportainer nginx

在您的nginx配置中使用以下内容:

代码语言:javascript
复制
events {
    worker_connections 1024;
}
http {
    server {
        listen 80;

        location / {
            proxy_pass http://myportainer:9000;
        }
    }
}

此外,上面的命令应该可以做到这一点,从长远来看,使用docker-compose会更容易

这是你的docker-compose.yml应该是什么样子:

代码语言:javascript
复制
version: "2"

services: 

  proxy:
      image: nginx:latest
      container_name: proxy
      ports:
       - "80:80"
      volumes:
       - /var/nginx/conf/nginx.conf:/etc/nginx/nginx.conf

  portainer:
      image: portainer/portainer
      container_name: myportainer

然后您只需运行docker-compose up -d

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50765138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档