通过Jenkins部署停靠的Angular应用程序时遇到问题

通过Jenkins部署停靠的Angular应用程序时遇到问题,angular,docker,jenkins,continuous-integration,dockerfile,Angular,Docker,Jenkins,Continuous Integration,Dockerfile,我设置了一个环境,希望在其中部署angular应用程序。为了获得与docker和jenkins的一些经验,我尝试利用这两种方法。目前,我能够在docker容器中部署angular应用程序 我不能通过Jenkins部署这个容器。 我想做的是: 当Jenkins检测到git repo中的更改时,构建一个新的docker容器 关闭旧容器(并且仅关闭该容器) 部署新容器 以下是我目前在jenkins中设置的构建命令: docker build -t angular-docker . docker run

我设置了一个环境,希望在其中部署angular应用程序。为了获得与docker和jenkins的一些经验,我尝试利用这两种方法。目前,我能够在docker容器中部署angular应用程序

我不能通过Jenkins部署这个容器。 我想做的是:

  • 当Jenkins检测到git repo中的更改时,构建一个新的docker容器
  • 关闭旧容器(并且仅关闭该容器)
  • 部署新容器
  • 以下是我目前在jenkins中设置的构建命令:

    docker build -t angular-docker .
    docker run -d -p 80:80 angular-docker
    
    现在,当执行这些命令时,我得到一个“端口已在使用”错误——这是有意义的,因为旧容器已经在端口上运行。我不明白的是我如何告诉jenkins通过关闭旧容器并部署新容器来“覆盖”旧容器

    如果你能给我指出正确的方向,或者告诉我,我的方法是完全错误的,我将不胜感激。我对这件事还不太熟悉,所以情况很可能就是这样。谢谢
    我正在努力想办法做到这一点。

    首先,给容器命名是一个很好的做法:

    docker build -t angular-docker .
    docker run -d -p 80:80 --name angular-app angular-docker
    
    然后,在尝试安装新版本之前,应该首先运行此命令

    docker rm -f angular-app
    
    在干净的情况下执行此操作,否则您将遇到相同的问题,因为旧容器没有命名

    希望这能帮你解决这个问题