docker离线部署前端镜像

249 阅读1分钟

本文记录 docker 离线部署前端镜像中的命令

镜像打包

1.拉取前端镜像

docker pull <registry-url>/<namespace>/<image-name>:<tag>

2.将镜像打包为tar文件

`docker save -o frontend_版本号.tar frontend:版本号`

加载镜像包

进入离线环境,将tar包加载为镜像

docker load -i frontend_版本号.tar

加载后可以通过docker images 查看镜像id

启动容器

镜像加载后,可以启动该容器:

docker run --name frontend -p 80:80 \  
        -v /etc/nginx/conf.d:/etc/nginx/conf.d:ro \  
        -d [frontend 镜像id]

-p: 映射容器端口到主机端口,格式为<主机端口>:<容器端口> -d: 后台运行 -v: 挂载卷,此处挂载配置文件

容器启动后就可以通过外部ip访问该ng服务了。

nginx配置文件

一般前端镜像会带一个nginx,如果有一些转发的配置项,可以通过挂载卷的方式挂载nginx配置文件:

提前准备好nginx配置文件,上面demo中,将ng配置放到了主机的/etc/nginx/conf.d/default.conf中。

server {
    listen   *:80;

    server_name *.bressanone.fun;

    client_max_body_size 1G;

    location / {
      root   /dist/;
      index  index.html index.htm;
      try_files $uri $uri/ /index.html;
      gzip on;
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      gzip_http_version 1.1;
      gzip_comp_level 9;
      gzip_types text/plain application/x-javascript application/json text/css text/javascript application/x-httpd-php image/jpeg image/gif image/png application/javascript;
      gzip_vary on;
    }
    

    location ^~/api/ {
        proxy_pass http://后端服务/api/;
        proxy_connect_timeout 60s;
        proxy_read_timeout 120s;
        proxy_send_timeout 120s;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto http;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
    }

}

进入容器

可以通过 exec命令进入容器

docker exec -it frontend /bin/bash