使用nginx实现一个主机部署多域名指向不同docker项目

原文:使用nginx实现一个主机部署多域名指向不同docker项目

 1,安装 docker

yum install docker

使用Docker 中国加速器

vim  /etc/docker/daemon.json

添加下面代码

{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "live-restore": true
}

(这个文件 初始状态是空的 只有“{}”)

启动服务

systemctl start docker

systemctl restart docker --重启

systemctl stop docker    --停止

查看版本

 docker version

查看状态

service docker status 

2,安装nginx

yum install nginx

启动服务

systemctl start nginx

systemctl restart nginx --重启

systemctl stop nginx    --停止

啥也不显示表示正常启动,如显示

表示启动出错,看这里解决 https://blog.csdn.net/a1007720052/article/details/82255226

输入http://服务器IP/ 如果能看到nginx的界面,就表示安装成功了

3,把项目推送到docker hub

需要先执行 docker login 登录到 docker hub
docker push ejiyuan/demo-docker

命令后面的 image tag 必须是 docker hub 用户名 + “/” + 项目名称形式,如果“/”与当前登录的用户名不对应 会提示没有权限

Error response from daemon: pull access denied for io/webapp, repository does not exist or may require ‘docker login‘

你可以使用下列命令修改镜像tag名称后再进行推送

docker tag io/webapp ejiyuan/webapp

4,从docker hub 中拉取 项目 docker image

在你需要部署的服务上安装docker 先执行 docker login 登录到 docker hub 然后执行下列命令拉取镜像到你的服务器上

docker pull ejiyuan/demo-docker

docker pull [image 名称]

5,启动 docker运行镜像服务

查看镜像文件

运行镜像到容器中:

docker run -p 127.0.0.1:9000:8080 -t docker.io/ejiyuan/demo-docker

docker之进入启动容器查看目录结构:docker exec -it containerID /bin/bash 或 docker exec -it containerID /bin/sh

这里我不想将9000端口暴露给外网(所有请求都从nginx,映射过来,也就是仅对往外开放80端口)所有限定ip:127.0.0.1,如果你既想实现通过指定域名访问,又想通过外部 “ip+端口” 访问,这里去掉127.0.0.0即可

检查是否正常运行:

方法1,使用curl透一下:

我的默认控制器会返回 hello Docker World

方法2,检查服务运行状态

方法3,使用 docker ps命令查看运行的容器

6,配置nginx:

 vim /etc/nginx/nginx.conf

修改或添加一个server标签

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
        location / {
        }
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
    #下面是自定义配置 端口转发
    server {
      listen 80;
      server_name www.abc.com;# 这里配置我们的域名,确定域名已解析到本机
      location / {
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:9000; #转发到本机9000端口
      }
    }

重启nginx:

systemctl restart nginx

在浏览器访问你的域名 www.abc.com

查看 docker项目容器运行日志

7,参考文档

docker nginx实现一个主机部署多个站点

在Docker容器环境中用Let‘s Encrypt部署HTTPS

为 docker 中的 nginx 配置 https

「Spring Boot」Docker配置SSL证书(免费证书)

Docker容器应用日志查看

Nginx/Tengine服务器安装SSL证书

关于Docker目录挂载的总结

docker之进入启动容器查看目录结构

原文地址:https://www.cnblogs.com/lonelyxmas/p/10336383.html

时间: 2024-07-29 09:07:24

使用nginx实现一个主机部署多域名指向不同docker项目的相关文章

nginx配置虚拟主机之基于域名

安装nginx请参考,nginx编译安装的博文 1:配置nginx虚拟主机,同一个端口80,多个不同的域名.nginx默认主配置文件内容如下 [[email protected] conf]# cat nginx.conf user  nginx; worker_processes  1; error_log  logs/error.log; pid        logs/nginx.pid; events {     worker_connections  1024; } http {   

在Mac上搭建带ssl协议和域名指向的Apache服务器

顾名思义,就是要在苹果电脑上搭建 Apache 服务器,并且支持 https 协议,能用指定域名访问(有些开发调试需要注册域名,比如调试微信JS-SDK),当然最好能在手机端进行调试.首先,Mac 系统自带 Apache 服务器,只需在终端输入 sudo apachectl start 回车即可开启 Apache,那么我们现在先给服务器绑定域名,然后再设置 ssl 协议,最后用 Charles 实现手机访问. 绑定域名 1.打开访达编辑  /private/etc/hosts  文件,在该文件中

linux下nginx实现虚拟主机(3种方法:基于域名、基于端口、基于ip地址)

在3.17日的时候已经写过一篇关于apahce的基于域名.端口.ip地址3种方式的虚拟主机实现.原理是一样的,现在记录nginx的虚拟主机这三种方式的实现. 系统版本为rhel5.6,nginx版本为1.1.6. 1.基于域名: 基于域名的方式,要先有dns服务器,这里为了方便,可以在/etc/hosts文件里面配置,把它当成dns就行了,可以参考3.17日那篇博客关于dns的配置或者其他博文也有.这里关于nginx的安装也略去. [[email protected] ~]# cat /etc/

LNMP(2)Nginx默认虚拟主机、Nginx用户认证、Nginx域名重定向、Nginx访问日志、

Nginx默认虚拟主机 Nginx和httpd都有虚拟主机,在httpd中第一个被加载的就是默认虚拟主机:但是在Nginx中它有一个配置用来标记默认虚拟主机(default_server),如果不做标记,那么第一个也是默认为虚拟主机. 默认虚拟主机设置: 1.需改配置文件/usr/local/nginx/conf/nginx.conf cd /usr/local/nginx/conf/ vim nginx.conf 删除内容后,加上一行(在httpd{}里加)include vhost/*.co

十二周二课 Nginx安装、Nginx默认虚拟主机、Nginx用户认证、Nginx域名重定向

Nginx安装 首先进入/usr/local/src目录.然后下载Nginx.wget http://nginx.org/download/nginx-1.12.1.tar.gz然后解压tar zxf nginx-1.12.1.tar.gz然后进入我们刚才解压好的目录进行编译cd nginx-1.12.1[[email protected] nginx-1.12.1]# ./configure --prefix=/usr/local/nginx这里没有加编译参数,我们可以根据实际情况,在后期编译

LNMP架构应用实战——Nginx配置虚拟主机

LNMP架构应用实战--Nginx配置虚拟主机        前面介绍了nginx服务的安装与配置文件,今天介绍下它的另一种实用配置--"虚拟主机",每个虚拟主机可以是一个独立的网站,可以具有独立的域名,同一台服务器上的不同的虚拟主机之间是独立的,用户访问不同虚拟主机如同访问不同的服务器一样,因此它不需要为一个单独的WEB站点提供单独一个nginx服务器和一个单独的nginx进程 1.nginx虚拟主机简单介绍 同apache服务一样,它也有三种不同的虚拟主机,基于域名的虚拟主机.基于

WEB服务器-Nginx之虚拟主机、日志、认证及优化

WEB服务器-Nginx之虚拟主机.日志.认证及优化 概述 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日.其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名.2011年6月1日,nginx 1.0.4发布. Nginx是一

nginx配置虚拟主机vhost的方法详解

摘自:http://www.jb51.net/article/107331.htm Nginx vhost配置,可实现基于ip.端口号.servername的虚拟主机,同时可避免直接修改主配置文件.在nginx下配置虚拟主机vhost非常方便.这篇文章主要介绍了nginx配置虚拟主机vhost的方法,需要的朋友可以参考下 前言 所谓虚拟主机,是说通过几个不同的url地址,都能到达nginx环境,只不过针对不同的url,处理的逻辑不同.nginx支持虚拟主机,但是浏览器等客户端不知道,所以虚拟主机

centos6.x配置虚拟主机名及域名hosts

我们在本地安装了centos或者虚拟主机上安装了centos,主机名称默认是localhost,这样我们可以使用localhost访问我们的主机,在终端命令里默认的是[[email protected] ~]#,当我们在centos上安装了Nginx后想配置多个域名,我们可以先修改我们的主机名和域名,下面的教程是针对centos6.x上测试的,全部通过,centos7.x没有测试. 我们必须以root用户登录,需要修改两个文件:一处是/etc/sysconfig/network,另一处是/etc