lrf 1 year ago
parent
commit
604e9a8740
8 changed files with 93 additions and 6 deletions
  1. 4 0
      .gitignore
  2. 1 5
      README.md
  3. 12 0
      docker/Dockerfile
  4. 20 0
      docker/compose.yml
  5. 22 0
      docker/http.conf
  6. 1 0
      docker/initStart.sh
  7. 32 0
      docker/readme.md
  8. 1 1
      src/config/config.prod.ts

+ 4 - 0
.gitignore

@@ -13,3 +13,7 @@ run/
 *.un~
 *.un~
 .tsbuildinfo
 .tsbuildinfo
 .tsbuildinfo.*
 .tsbuildinfo.*
+material_server/
+material.tar.gz
+docker/material_server/
+docker/material/

+ 1 - 5
README.md

@@ -9,8 +9,4 @@
    2. 到指定服务器上(确定好CPU架构是否和打包的机器的CPU架构一样.不一样的话不一定好使), 解压; 指定服务器需要nodejs和pm2环境
    2. 到指定服务器上(确定好CPU架构是否和打包的机器的CPU架构一样.不一样的话不一定好使), 解压; 指定服务器需要nodejs和pm2环境
    3. 剩下的就是nginx啥的自己看着弄吧
    3. 剩下的就是nginx啥的自己看着弄吧
   ### 2.docker部署:
   ### 2.docker部署:
-    在自己机器上做好项目的镜像.直接提供给客户或者到服务器上直接用
-   1. 将free_node_base下来(刘睿峰的docker私人仓库里有), 并且把生产环境所需的文件(上面正常部署提过)放到docker中
-   2. 进入容器里看看能不能起来项目
-   3. 编排docker-compose
-   4. 将所有镜像放到服务器上,运行docker-compose
+    看docker文件夹

+ 12 - 0
docker/Dockerfile

@@ -0,0 +1,12 @@
+# 以 free_node_base为基础
+FROM free_node_base:v2
+# 将服务拷进容器
+COPY material_server /home/workspace/service/
+# 将前端拷进容器
+COPY material /home/workspace/web/
+# 将nginx的配置拷进容器
+COPY http.conf /home/nginx/conf/server/
+# 打开端口
+EXPOSE 13004
+# 设置位置
+WORKDIR /home

+ 20 - 0
docker/compose.yml

@@ -0,0 +1,20 @@
+version: "3.8"
+services:
+  service:
+    container_name: haocai
+    # 使用制作的项目镜像
+    image: project:v1
+    # 开放端口号
+    ports:
+      - 13004:80
+    tty: true
+    restart: always
+    command: 
+      - /bin/bash 
+      - -c 
+      - |
+        /home/nginx-start.sh & 
+        cd /home/workspace/service/material_server && pm2 start &
+        /bin/bash
+    extra_hosts:
+      - host.docker.internal:host-gateway

+ 22 - 0
docker/http.conf

@@ -0,0 +1,22 @@
+server {
+    listen       80;
+    #server_name  broadcast.waityou24.cn 127.0.0.1;
+    location / {
+        root   html;
+        index  index.html index.htm;
+    }
+
+    location /material/v1/api {
+      proxy_pass http://127.0.0.1:13004;
+    }
+    location /material {
+       root /home/workspace/web;
+       index index.html index.htm;
+       try_files $uri $uri/ /material/index.html;
+    }
+
+    error_page   500 502 503 504  /50x.html;
+    location = /50x.html {
+        root   html;
+    }
+}

+ 1 - 0
docker/initStart.sh

@@ -0,0 +1 @@
+/home/nginx-start.sh && cd /home/workspace/service/material_server && pm2 start

+ 32 - 0
docker/readme.md

@@ -0,0 +1,32 @@
+# Docker使用
+## 将要拷贝进入容器的内容置于和Dockerfile同一文件夹内
+## 下载free_node_base:v2镜像
+## 1.Dockerfile
+  1.1 将web和服务都拷进容器指定位置里 <br>
+      服务:/home/workspace/service/ <br>
+      web:/home/workspace/web/<br>
+  1.2 修改http.conf(nginx的配置文件)
+  1.3 执行 `docker build -t ${镜像名}:${tag}`
+## 2.compose.yml
+  2.1 端口问题:找一个宿主机(服务器)没被占用的端口映射到容器80上
+  2.2 修改command中的指令,主要是有关于启动项目那部分
+## 3.宿主机
+  3.1 nginx: 在宿主机(服务器)的nginx上 http代码块中 设置
+  > `upstream ${名称} {
+        server 127.17.0.1:${容器暴露的端口};
+    }`
+  
+  随后再添加该项目向docker转发的设置
+  > `location ${前缀} {
+    proxy_pass http://haocai;
+  }
+  `
+## 4.部署
+  4.1 现在自己机器上(或者有docker的机器上)执行Dockerfile,生成镜像. <br>
+  如果不是在服务器上,则:
+    将镜像保存为文件
+    `docker save -o FILE_NAME(.tar/.tar.gz) IMAGE_NAME:TAG`
+    扔到服务器上,加载
+    `docker load -i FILE_NAME`
+    再运行compose.yml
+    `docker compose up -d`

+ 1 - 1
src/config/config.prod.ts

@@ -1,5 +1,5 @@
 import { MidwayConfig } from '@midwayjs/core';
 import { MidwayConfig } from '@midwayjs/core';
-const ip = '127.0.0.1';
+const ip = 'host.docker.internal';
 const project = 'material';
 const project = 'material';
 const mongodb = 'material_v1';
 const mongodb = 'material_v1';
 export default {
 export default {