之前入坑dotnet core,由于一开始就遇到在windows上编译发布的web无法直接放到centos上执行。之后便直接研究docker,实现在容器中编译发布。然后就越玩越大,后来利用git的hooks实现自动实现git源码一收到push就自动化获取新代码并编译发布。最后为了方便复用,直接做成统一配置,因此不需要再次编写复杂的脚本配置。只需要打开配置文件,配置几项值,运行一个脚本就ok。

  目前有两个版本,原始版本包括git项目的自动克隆。v1版本则把git的克隆抽了出来需要人工克隆一次。具体看readme文档有说明。

 

技术栈

  1. asp.net core
  2. shell脚本
  3. python
  4. docker
  5. docker-compose
  6. nginx

github地址:https://github.com/CrystalWindSnake/NetCore.Test.AutoDeployment.git

 

坑s的记录(这里会慢慢补充更新)

源码更新后,重启web容器后,再次访问网页会出现502错误。

  这个原因是因为docker的网络机制。每次容器启动时,docker都会重新分配一个ip地址给容器,如果有配置容器之间网络通信(通过links),会在容器中的hooks文件中记录上连接容器的ip信息。但由于web容器重启而不需要重启nginx,导致nginx容器还记录着之前web容器的ip信息,导致更新后再次访问nginx就跳转不到web容器上。

  解决方法就是配置独立的网络(通过docker-compose)。具体看下面截取的配置(docker-compose.yml)

version: '3'
services:
    web: 
      networks:
        - auto-ci-nw

    nginx:
      networks:
        - auto-ci-nw
                
networks:
  auto-ci-nw:

  

  

 

Copyright © 2024 CrystalWind
Powered by .NET 9.0 on Kubernetes