> 文章列表 > 【Docker】通过dockerfile构建Nginx镜像部署多Web应用

【Docker】通过dockerfile构建Nginx镜像部署多Web应用

【Docker】通过dockerfile构建Nginx镜像部署多Web应用

【Docker】Docker安装

docker打包镜像

  • Dockerfile构建镜像
    • 编写Dockerfile脚本
    • 构建镜像前的准备
    • 执行Dockerfile脚本 构建镜像
    • 镜像导入
  • 配置nginx.conf文件
  • Docker操作
    • 查询index.html的路径
    • 修改web1下ProjectConfig-72e0c4f7dd.json配置文件
    • 修改nginx配置文件nginx.conf

Dockerfile构建镜像

编写Dockerfile脚本

# 基于 nginx:latest 镜像而构建
FROM nginx:latestCOPY ./web1/ /var/app/web1/
COPY ./web2/ /var/app/web2/
COPY ./assets/ /var/app/assets/
COPY ./default.conf /etc/nginx/conf.d/default.conf
COPY ./nginx.conf /etc/nginx/nginx.confEXPOSE 80
# 添加daemon off;配置可以让nginx在前台启动
# RUN echo "daemon off;" >> /etc/nginx/nginx.confCMD [ "nginx", "-g", "daemon off;" ]

构建镜像前的准备

根据上方的Dockerfile脚本在E:**\\DockerImage文件夹下准备好所需内容
【Docker】通过dockerfile构建Nginx镜像部署多Web应用
web1、web2、assets代表三个web应用
default.conf、nginx.conf代表nginx配置文件

执行Dockerfile脚本 构建镜像

1、Win + R 打开运行框 输入cmd 打开命令窗口
2、输入E:进入E盘符 输入 cd E:**\\DockerImage 进入

// 打包镜像
docker build -t service:1.0 . // 镜像导出
docker image save service:1.0 -o E:\\**\\DockerImage\\service.taz

镜像导入

// 镜像导入
docker image load -i E:\\**\\DockerImage\\service.taz

配置nginx.conf文件

server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   /var/app/web1;index  index.html index.htm;}location /web2 {root   /var/app;index  index.html index.htm;}location /assets {root   /var/app/;index  index.html index.htm;}location /app {proxy_pass http://xx.x.xx.xx:xxxx/;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}

访问路径 xxxx为端口
http://location:xxxx/
http://location:xxxx/web2/
http://location:xxxx/assets/
http://location:xxxx/app/ 代理

Docker操作

查询index.html的路径

// 查看容器
docker ps
// 进入容器
docker exec -it 容器ID bash
// 查询下容器中 index.html 的路径
find / -name index.html

修改web1下ProjectConfig-72e0c4f7dd.json配置文件

// 查看容器
docker ps
// 进入容器
docker exec -it 容器ID bash
// 查询下容器中 "Project*.json" 的路径
find / -name "Project*.json"
// 输出内容
/var/app/web1/ProjectConfig-72e0c4f7dd.json
/var/app/web2/ProjectConfig-a877352052.json
// 退出容器
exit   
// 将配置文件拷贝到当前文件夹
docker cp 容器ID:/var/app/web1/ProjectConfig-72e0c4f7dd.json ./
// 将修改后的配置文件拷贝容器中web1文件夹下
docker cp ./ProjectConfig-72e0c4f7dd.json  容器ID:/var/app/web1/ 
// 重启容器
docker restart 容器ID

修改nginx配置文件nginx.conf

// 查看容器
docker ps
// 进入容器
docker exec -it 容器ID bash
// 查询下容器中 "nginx.conf" 的路径
find / -name "nginx.conf"
// 输出内容
/etc/nginx/nginx.conf
// 退出容器
exit   
// 将配置文件拷贝到当前文件夹
docker cp 容器ID:/etc/nginx/nginx.conf ./
// 将修改后的配置文件拷贝容器/etc/nginx/文件夹下
docker cp ./nginx.conf  容器ID:/etc/nginx/
// 重启容器
docker restart 容器ID