从0起步,在Ubuntu上使用docker或docker compose部署nginx

需求描述

公司新买了一台服务器,想在上面部署一个nginx服务器,/opt/nginx/config/存放nginx的配置文件,/opt/nginx/html存放nginx的静态网站文件,/opt/nginx/logs存放nginx的日志信息,这时候该怎么办?

一、安装Docker

如果你的服务器上还没有安装Docker,首先需要安装它。可以使用以下命令:

bash 复制代码
sudo apt update
sudo apt install docker.io

安装完成后,启动 Docker 服务并设置为开机自启动:

bash 复制代码
sudo systemctl start docker
sudo systemctl enable docker

查看Docker是否开启,出现绿色圆点表示服务正常开启

bash 复制代码
sudo systemctl status docker

二、Docker 镜像源配置

1、打开终端,运行以下命令以编辑 Docker 配置文件

bash 复制代码
nano /etc/docker/daemon.json

2、将以下配置信息复制并粘贴到 nano 编辑器中:

json 复制代码
{
    "registry-mirrors" : [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://cr.console.aliyun.com",
    "https://mirror.ccs.tencentyun.com"
  ]
}

按下 Ctrl + O 键,然后按 Enter 键,以保存文件。接着按下 Ctrl + X 键,退出 nano 编辑器。

3、重启 Docker 服务

复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

三、创建Nginx配置文件夹和文件

在服务器上创建需要的文件夹,用于存放 Nginx 的配置文件。

bash 复制代码
sudo mkdir -p /opt/nginx/config   # 创建Nginx配置文件夹
sudo mkdir -p /opt/nginx/html     # 创建Nginx静态网站文件夹
sudo mkdir -p /opt/nginx/logs     # 创建Nginx日志文件夹

/opt/nginx/config 目录下创建一个 nginx.conf 文件,

bash 复制代码
sudo nano /opt/nginx/config/nginx.conf

文件内容参考下面的配置,注意配置中的路径要使用容器中的路径,而不是宿主机中的路径

ini 复制代码
nginxCopy code
worker_processes 1;

events {
    worker_connections 1024;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    server {
        listen 80;
        server_name localhost;

        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root /usr/share/nginx/html;
        }
    }
}

四、使用Docker部署nginx

上述创建的配置文件和文件夹,使用Docker运行Nginx容器。运行以下命令:

bash 复制代码
sudo docker run -d \
    --name nginx \ # 容器的名称为nginx
    -p 80:80 \  # 映射主机端口80到容器端口80
    -v /opt/nginx/config/nginx.conf:/etc/nginx/nginx.conf \
    -v /opt/nginx/html:/opt/nginx/html \
    -v /opt/nginx/logs:/var/log/nginx \
    nginx:latest # 使用的版本,可以指定版本号,比如 `nginx:1.20`.

运行以下命令检查容器的运行状态:

bash 复制代码
sudo docker ps

五、使用Docker Compose部署nginx

在服务器上创建一个名为 docker-compose.yml 的文件,并添加以下内容:

yaml 复制代码
version: '3'

services:
  nginx:
    image: nginx:latest
    container_name: nginx
    volumes:
      - /opt/nginx/config:/etc/nginx/conf.d
      - /opt/nginx/html:/usr/share/nginx/html
      - /opt/nginx/logs:/var/log/nginx
    ports:
      - "80:80"
    restart: always

在包含 docker-compose.yml 文件的目录中运行以下命令启动Nginx容器:

bash 复制代码
sudo docker-compose up -d
相关推荐
parafeeee5 小时前
程序人生-Hello’s P2P
数据库·后端·asp.net
jyfool5 小时前
Ubuntu 远程桌面配置踩坑实录:从 TightVNC 到 x11vnc 的折腾之旅
linux·运维·ubuntu
bug攻城狮6 小时前
Spring Boot应用内存占用分析与优化
java·jvm·spring boot·后端
安当加密6 小时前
基于 RADIUS 的 Linux 服务器双因子认证:从 FreeRADIUS 到轻量级 ASP 方案的演进
linux·运维·服务器
今天你TLE了吗6 小时前
JVM学习笔记:第八章——执行引擎
java·jvm·笔记·后端·学习
66清小风6 小时前
服务器安装操作系统报X or window manager startup failed, falling back to mode
linux·kylin
XPoet7 小时前
AI 编程工程化:Rule——给你的 AI 员工立规矩
前端·后端·ai编程
double2li7 小时前
linux/unix 段错误捕获【续】
linux·运维·服务器·网络·unix
allway27 小时前
Linux / Unix last Command Examples
linux·运维·unix
韩立学长7 小时前
基于Springboot校园志愿者服务平台77pz7812(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端