部署一个网页Docker+Nginx

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 在docker中运行一个nginx容器,部署一个网页

一、安装docker

1.1 centos 7使用yum安装

# Sep 1: 安装必要的一些系统工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装 Docker-CEsudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务sudoservice docker start# 查看vesiondocker version

1.2 配置镜像加速器

阿里云容器镜像服务:https://cr.console.aliyun.com/cn-shanghai/instances/mirrors

关于镜像加速器

使用加速器可以提升获取Docker官方镜像的速速

sudomkdir-p /etc/docker
sudotee /etc/docker/daemon.json <<-'EOF'{
"registry-mirrors": ["加速器地址"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

1.3 简单操作-运行一个nginx

# 搜索nginx的镜像docker search nginx
# 拉取latest版本的nginx镜像docker pull nginx:latest
# 查看本地存储的镜像docker images
# 运行容器docker run --name nginx -p80:80 -d nginx
# 进入容器内部docker exec -it nginx bash
1.3.1 命令参数说明
  • --name nginx指定容器名称为nginx
  • -p 80:80端口映射,将本地80端口映射到容器内部的80端口
  • -d 设置容器在后台一直运行
  • nginx 指定运行的镜像
1.3.2 其他参数
  • -v 挂载映射目录

二、部署nginx

2.1 复制容器内的nginx的配置文件

docker cp nginx:/etc/nginx /data/nginx

复制过来的结构

image.png

其中目前用到的有nginx.conf配置文件和conf.d文件夹下的default.conf默认配

置文件

说明

文件

挂载路径

容器nginx路径

nginx相关

nginx.conf和conf.d

/data/nginx

/etc/nginx

html路径

html文件夹

/data/nginx/html

/usr/share/nginx/html

日志文件

log文件夹

/data/nginx/logs

/var/log/nginx

2.1.1 拓展

docker cp命令


// 将容器内文件复制到宿主机中

docker cp [容器名称]:/目录 /目录


// 将宿主中的文件复制到容器内部

docker cp /目录 [容器名称]:/目录

2.2 创建其他挂载目录

mkdir-p /data/nginx/{html,logs}

2.3 修改default.conf文件

server {
 
    #端口号    listen       80;
    #定义使用 localhost 访问    server_name  localhost;
 
    #charset koi8-r;    #access_log  /var/log/nginx/host.access.log  main; 
    location / {
        #根目录位置        root   /usr/share/nginx/html;
        #index 文件位置        index  test.html;
    }
 
    #error_page  404              /404.html; 
    # redirect server error pages to the static page /50x.html    #    error_page   500502503504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
 
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80    #    #location ~ \.php$ {    #    proxy_pass   http://127.0.0.1;    #} 
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000    #    #location ~ \.php$ {    #    root           html;    #    fastcgi_pass   127.0.0.1:9000;    #    fastcgi_index  index.php;    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;    #    include        fastcgi_params;    #} 
    # deny access to .htaccess files, if Apache's document root    # concurs with nginx's one    #    #location ~ /\.ht {    #    deny  all;    #}}

2.4 在html文件夹下创建test.html网页

<html><head><title>Mynginx</title></head><body><h1>Hello Nginx!!!
</h1></body></html>

2.5 删除之前创建的容器

docker stop nginx
docker rm nginx

2.6 创建新的容器

docker run --name nginx -d-p80:80 \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/logs:/var/log/nginx \
# 上面因为已经将nginx容器中的nginx文件夹整个cp过来的# 这里将挂载映射整个文件夹# 为后面实现ssl做铺垫-v /data/nginx:/etc/nginx \
nginx

2.7 不停止nginx更新配置文件

2.7.1 第一种
# 进入到nginx容器的内部docker exec -it nginx bash# 测试配置文件是否有问题,显示successful证明配置文件没有问题nginx -t# 更新nginx -s reload
2.7.2 第二种

第一种是进入到容器内部,有些繁琐

下面将两者整合

# 后面的nginx -t是nginx的命令docker exec [容器名称(nginx)] nginx -t# 后面的nginx -s reload是nginx的命令docker exec [容器名称(nginx)] nginx -s reload

三、配置ssl

3.1 购买阿里云的免费证书

阿里云每年可以有20张免费的证书,即可以为20个域名提供ssl

https://yundun.console.aliyun.com/?p=cas#/certExtend/free

3.2 创建证书关联域名解析

image.png

image.png

域名解析:https://dns.console.aliyun.com/#/dns/domainList

完成签发之后,状态这一栏会是这个样子

image.png

继续点击“下载”,下载我们需要的服务器证书,这里选择nginx

image.png

3.3 配置证书

3.3.1 创建证书存放目录
mkdir /data/nginx/ssl
3.3.2 上传证书

将下载的证书解压,上传到这个存放目录中

会有xxx.pem和xxx.key这两个文件

image.png

由于我们在运行容器的时候已经挂载了-v /data/nginx:/etc/nginx

这个时候我们进入到容器内部

docker exec -it nginx bash

在/etc/nginx/ssl文件夹中发现这两个文件

cd /etc/nginx/ssl
ls-lh
3.3.3 查看挂载配置
docker inspect nginx

image.png

3.4 修改配置文件

配置方式可以使用下载证书旁边的帮助,在Nginx或Tengine服务器上安装证书

#以下属性中,以ssl开头的属性表示与证书配置有关。server {
    listen 443 ssl;
#配置HTTPS的默认访问端口为443。#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。    server_name yourdomain;
    root html;
    index index.html index.htm;
    ssl_certificate /etc/nginx/ssl/cert-file-name.pem;  
    ssl_certificate_key /etc/nginx/ssl/cert-file-name.key; 
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的加密套件的类型。    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。    ssl_prefer_server_ciphers on;
    location / {
        root html;  #Web网站程序存放目录。        index index.html index.htm test.html;
    }
}
# 注意 以下代码片段需要放置在nginx.conf文件中server {}代码段后面,即设置HTTP请求自动跳转HTTPS后,nginx.conf文件中会存在两个server {}代码段。server {
    listen 80;
    server_name yourdomain; #需要将yourdomain替换成证书绑定的域名。    rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。    location / {
        index index.html index.htm test.html;
    }
}

3.5 刷新配置文件

docker exec nginx nginx -tdocker exec nginx nginx -s reload

访问配置的域名,就会看到自己创建的界面了

image.png

由于我们没有将/usr/share/nginx/html中的原始默认页面cp过来,所以不会看到熟悉的nginx的默认页面。

目录
相关文章
|
4天前
|
人工智能 API 数据库
FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
【9月更文挑战第5天】 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
 FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统(含sealos云端部署、docker部署、OneAPI&Xinference模型接入)
|
14天前
|
Docker 容器
Docker自建仓库之Harbor高可用部署实战篇
关于如何部署Harbor高可用性的实战教程,涵盖了从单机部署到镜像仓库同步的详细步骤。
49 15
Docker自建仓库之Harbor高可用部署实战篇
|
14天前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
14天前
|
虚拟化 Docker Windows
window 10专业版部署docker环境
本文介绍了如何在Windows 10专业版上部署Docker环境,包括安装步骤、配置镜像加速以及可能遇到的错误处理。
35 2
window 10专业版部署docker环境
|
2天前
|
Devops jenkins 持续交付
DevOps实践:构建和部署一个Docker化的应用
【9月更文挑战第14天】在当今快节奏的软件开发领域,DevOps已经成为提升效率、加速交付的关键。本文将引导你理解DevOps的核心概念,并通过一个实际的示例—构建和部署一个Docker化的应用—来深入探讨其实践方法。我们将从简单的应用出发,逐步实现Docker容器化,并最终通过CI/CD流水线自动化部署过程。这不仅是对DevOps流程的一次实操演练,也是对现代软件开发理念的一次深刻体验。
|
12天前
|
负载均衡 网络协议 应用服务中间件
web群集--rocky9.2源码部署nginx1.24的详细过程
Nginx 是一款由 Igor Sysoev 开发的开源高性能 HTTP 服务器和反向代理服务器,自 2004 年发布以来,以其高效、稳定和灵活的特点迅速成为许多网站和应用的首选。本文详细介绍了 Nginx 的核心概念、工作原理及常见使用场景,涵盖高并发处理、反向代理、负载均衡、低内存占用等特点,并提供了安装配置教程,适合开发者参考学习。
|
14天前
|
NoSQL 关系型数据库 数据库
JumpServer的Docker部署实战案例
JumpServer的Docker部署实战案例,详细介绍了JumpServer的概述、环境准备、基于Docker的快速部署步骤,以及如何访问JumpServer的WebUI。
16 0
|
关系型数据库 MySQL 应用服务中间件
|
Web App开发 应用服务中间件 nginx
saltstack批量部署并配置nginx
最近应别的部门要求研究了一下saltstack,感觉很好用哈!虽然我现在生产环境用的puppet,想以后逐渐用这个去替代puppet,至于ansible还没研究,以后有时间再看看吧! 一、Saltstack是什么? saltstack是一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。
1823 0
|
29天前
|
应用服务中间件 nginx Docker
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
这篇文章介绍了如何通过域名在本地访问虚拟机上的nginx服务,包括创建nginx容器、修改配置文件、修改本地host文件以及进行访问测试的详细步骤。文章提供了具体的Docker命令来创建并配置nginx容器,展示了配置文件的修改示例,说明了如何在本地系统的hosts文件中添加虚拟机IP和自定义域名,以及如何通过浏览器进行测试访问。
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)