Docker 安装 Nginx
若是不需要将配置映射到宿主机则运行如下即可
docker run --name my-nginx -v /mnt/second_disk_90g/nginx:/etc/nginx -p 80:80 -d nginx
若是需要将配置映射到宿主机
Docker在启动容器时会尝试映射该目录或文件,但如果目录为空,它不会自动创建默认的 default.conf
文件。
1. 准备配置文件
首先,确保你有一个有效的Nginx配置文件。如果你没有,可以从一个现有的Nginx容器中复制默认的配置文件:
1.1 临时运行一个Nginx容器:
docker run --name temp-nginx -d nginx
1.2 从运行中的Nginx容器复制默认配置文件到宿主机:
docker cp temp-nginx:/etc/nginx/nginx.conf /mnt/second_disk_90g/nginx/
docker cp temp-nginx:/etc/nginx/conf.d/default.conf /mnt/second_disk_90g/nginx/conf/
1.3 停止并删除临时容器:
docker stop temp-nginx docker rm temp-nginx
2. 修正映射路径并启用
Docker命令:
docker run --name my-nginx \
-v /mnt/second_disk_90g/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /mnt/second_disk_90g/nginx/conf.d:/etc/nginx/conf.d \
-v /mnt/second_disk_90g/nginx/ssl:/etc/nginx/ssl \
-p 80:80 \
-p 443:443 \
-d nginx
如果想要映射整个/etc/nginx
目录(包括nginx.conf
和conf.d
目录),需要调整Docker运行命令来映射整个目录,而不仅仅是conf.d
子目录。
3. 配置证书
在Nginx配置中(可能是nginx.conf
文件或者conf.d
目录下的某个文件),确保有针对443端口的监听和SSL配置,类似于以下这样:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/nginx/ssl/yourcertificate.pem; <em># 证书文件路径</em>
ssl_certificate_key /etc/nginx/ssl/yourprivate.key; <em># 私钥文件路径</em>
<em># ... 其他SSL配置和服务器配置</em>
}
4. 重新运行Nginx容器
现在已经有了默认的配置文件,可以按照上面修正后的映射命令重新运行Nginx容器。
注意,每次修改配置文件后,为了使更改生效,你需要重启Nginx容器:
docker restart my-nginx