制作ngin网页镜像,即开即用
完整实现步骤(Dockerfile + 配置 + 网页)
1. 准备项目目录结构
在服务器上创建一个专门的构建目录,结构如下:
Plaintext
my-game/
├── Dockerfile
├── default.conf
└── huangjinkuanggong/
└── index.html
2. 准备 Nginx 配置文件 default.conf
Nginx
server {
listen 80;
server_name _;
root /usr/share/nginx/html/huangjinkuanggong;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
3. 准备 Dockerfile
基于官方极简的 nginx:alpine 镜像来构建:
Dockerfile
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
apk update && \
apk add nginx && \
rm -rf /var/cache/ rm -f /usr/share/nginx/* && \
mkdir -pv /usr/share/nginx/html/huangjinkuanggong && \
mkdir -pv /usr/share/nginx/html/killbird
# ADD指令会将tar包的内容自动解压到容器的指定路径,相当于: "tar oldboyedu-huangjinkuanggong.tar.gz -C /usr/share/nginx/html/huangjinkuanggong"
# 可以理解为先拷贝文件到容器中,然后在解压,最后删除源文件。
ADD huangjinkuanggong.tar.gz /usr/share/nginx/html/
# 将本地文件拷贝到容器的指定路径并覆盖原有的文件内容
COPY game.conf /etc/nginx/http.d/default.conf
# 暴露 80 端口
EXPOSE 80
# 指定容器的启动命令
CMD ["nginx","-g","daemon off;"]
4. 构建并启动容器
在 my-game 目录下执行构建:
Bash
# 构建镜像,命名为 my-game:v1
docker build -t my-game:v1 .
验证方法:执行
docker images | grep my-game,能看到镜像大小约只有几十 MB。
启动容器并映射到宿主机端口(注意避开已被 NPM 占用的 80 端口,例如映射为 8082):
Bash
docker run -d \
--name web-game \
--restart unless-stopped \
-p 8082:80 \
my-game:v1
验证方法:
执行
docker ps | grep web-game,状态显示为Up。终端执行
curl [http://127.0.0.1:8082](http://127.0.0.1:8082),能正确输出index.html的 HTML 内容。
5. 两种对外访问方式
方式 A(直接端口访问): 在云服务器安全组放行
8082端口,浏览器直接访问http://你的公网IP:8082。方式 B(通过现有的 NPM 绑定域名访问,无需放行 8082): 把这个容器接入你现有的 Docker 网络(比如加入 NPM 所在的网络),在 NPM 面板中添加一个 Proxy Host:
Domain Names:填你的域名(如
game.yourdomain.com)Forward Hostname / IP:填容器名
web-gameForward Port:填
80勾选 SSL 证书后直接以标准 HTTPS 域名访问。
评论