静态网站创建 docker 镜像并推送到阿里云

1. 首先在一个文件夹中准备三个文件(夹)

  • 1.1 静态网站所在目录 /dist
  • 1.2 Dockerfile 镜像构建文件
  • 1.3 default.conf nginx 默认配置文件

2. Dockerfile 文件

# 拉取 nginx 镜像
FROM nginx:latest 
# 将静态网站文件夹拷贝到 nginx 镜像中的对应文件夹中
COPY ./dist /usr/share/nginx/html/ 
# 将 nginx 配置文件拷贝到 nginx 镜像中对应文件夹中
COPY ./default.conf /etc/nginx/conf.d/ 
# 声明暴露端口号为 9000
EXPOSE 9000 

3. default.conf nginx 默认配置文件

server {
    # nginx 监听的端口号
    listen 9000;
    server_name localhost;
    # jetlinks 文档中要求
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";

    # 路径匹配
    location / {
        # 静态文件所在文件夹,需与 Dockerfile 中配置一样
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri $uri/ /index.html;
    }
    # jetlinks 文档要求,用以链接 jetlinks 后端
    location ^~/jetlinks/ {
        proxy_pass http://42.192.123.52:8848/; #修改此地址为后台服务地址
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_connect_timeout   1;
        proxy_buffering off;
        chunked_transfer_encoding off;
        proxy_cache off;
        proxy_send_timeout      30m;
        proxy_read_timeout      30m;
        client_max_body_size    100m;
    }
}

4. 开始构建镜像并运行容器

# 开始构建镜像 -t 构建镜像的名称   . 表示当前目录
docker build -t qiaoyu/jetlinks_ui_big_screen:v1 .

# 根据构建出的镜像创建运行容器
# -i 以交互模式运行容器,通常与 -t 同时使用
# -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
# -d 后台运行容器,并返回容器ID
# -p docker 容器内外端口映射
# --name 运行容器的名称
# 最后跟上容器镜像的名称
docker run -itd -p 9000:9000 --name jetlinks_ui_big_screen qiaoyu/jetlinks_ui_big_screen:v1

5. 将 docker 镜像同步推送保存到阿里云中

  • 首先在阿里云容器镜像服务中创建该镜像仓库
  • 在本地 docker 环境中登陆阿里云 Docker Registry
    docker login --username=qiaoyurens****@163.com registry.    cn-hangzhou.aliyuncs.com
    
  • 在本地为需要推送到阿里云的镜像大个标记,将其归入某一仓库
    docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/qiaoyu/jetlinks_ui_big_screen:[镜像版本号]
    
  • 将本地镜像推送到阿里云平台中
    docker push registry.cn-hangzhou.aliyuncs.com/qiaoyu/jetlinks_ui_big_screen:[镜像版本号]