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

 1,安装 docker

# Install required packages. yum-utils provides the yum-config-manager utility, and device-mapper-persistent-data and lvm2 are required by the devicemapper storage driver.
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# Use the following command to set up the stable repository. You always need the stablerepository, even if you want to install builds from the edge or test repositories as well.
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
# Install the latest version of Docker CE, or go to the next step to install a specific version.
yum install docker-ce

使用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

配置Nginx最新源

vim /etc/yum.repos.d/nginx.repo

添加下列内容

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

查看nginx源

yum info 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之进入启动容器查看目录结构

posted @ 2019-01-24 19:14  ejiyuan  阅读(7200)  评论(0编辑  收藏  举报