作者:94爱拍就是爱拍 | 来源:互联网 | 2022-12-07 18:57
我在安装了Windows Docker的Windows 10 PC上使用Visual Studio 2017创建了具有Linux docker支持的.Net核心应用程序。我可以使用以下命令来运行它(控制台应用程序)
docker run MyApp
我有一台装有Docker的Linux机器。如何将.Net核心应用程序发布到Linux计算机?我需要在Linux机器上发布并运行dockerized应用程序。
Linux已安装以下Docker软件包。
$ sudo yum列表已安装“ * docker *”
加载的插件:amazon-id,rhui-lb,search-disabled-repos
已安装的套件
docker-engine.x86_64 17.05.0.ce-1.el7.centos @dockerrepo
docker-engine-selinux.noarch 17.05.0.ce-1.el7.centos @dockerrepo
rekiem87..
5
有很多方法可以做到这一点,只需搜索CI / CD的任何工具即可。
最简单的方法是手动操作,连接到Linux服务器,git pull
编写代码,然后运行与本地运行相同的命令。
另一个选择是将docker映像推送到容器注册表,然后拉入docker服务器,您就可以开始了
编辑:
您应该真正看一下一些CI服务,例如,在我们的环境中,我们使用GitLab,当我们进行推送以掌握项目时,有一个gitlab.yml构建项目,然后进行推送:
image: docker:latest
services:
- docker:dind
stages:
- build
api:
variables:
IMAGE_NAME: git.lagersoft.com:4567/gumbo/vtae/api:${CI_BUILD_REF}
stage: build
only:
- master
script:
- docker build -t ${IMAGE_NAME} -f vtae.api/Dockerfile .
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN ${IMAGE_NAME}
- docker push ${IMAGE_NAME}
这样,我们只需要使用最新版本来拉入我们的服务器即可。
值得注意的是,docker本身并不处理发布部分,因此如果您要开始学习,您需要手动或使用某种工具(如gitlab,jenkins,circleci,亚马逊代码管道等任何CI工具)来完成。建议手动启动,然后集成一些CI工具。
编辑2
关于Visual Studio工具,我不建议将其用于本地开发以外的其他任何用途,因为是的,它只能在Windows中运行,并且只能在Visual Studio中使用(Rider最近才集成了它),因此请进行部署在Linux环境中,我们使用自己的docker和docker compose文件,无论如何它们都是基于默认值的,它们是这样的:
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY lagersoft.common/lagersoft.common.csproj lagersoft.common/
COPY vtae.redirect/vtae.redirect.csproj vtae.redirect/
COPY vtae.data/vtae.data.csproj vtae.data/
COPY vtae.common/vtae.common.csproj vtae.common/
RUN dotnet restore vtae.redirect/vtae.redirect.csproj
COPY . .
WORKDIR /src/vtae.redirect
RUN dotnet build vtae.redirect.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish vtae.redirect.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "vtae.redirect.dll"]
该docker文件复制所有相关项目(我讨厌复制部分,但与Microsoft的默认文件相同),执行构建并发布应用程序,另一方面,我们有一个docker-compose来添加一些服务(此文件必须位于解决方案文件夹中才能访问所有相关项目):
version: '3.4'
services:
vtae.redirect.redis:
image: redis
volumes:
- "./volumes/redirect/redis/data:/data"
container_name: vtae.redirect.redis
vtae.redirect:
image: vtae.redirect
depends_on:
- vtae.redirect.redis
build:
context: .
dockerfile: vtae.redirect/Dockerfile
ports:
- "8080:80"
volumes:
- "./volumes/redirect/data:/data"
container_name: vtae.redirect
entrypoint: dotnet /app/vtae.redirect.dll
有了这部分,只剩下要做一个提交,然后拉入服务器并运行docker-compose up
命令来运行我们的应用程序(您可以直接从docker文件中执行此操作,但是使用docker compose可以更轻松,更易于管理。
编辑3
为了在服务器中进行部署,我们使用了两个工具。
提交完成后,首先运行gitlab ci
它使构建在docker文件中指定,并将其推送到我们的Gitlab容器注册表,如果它是亚马逊,谷歌,azure等的容器注册表,则相同...
然后向生产中的服务器发出发布请求,该服务器在单独的端口中运行特殊工具
服务器收到发帖请求并对其进行验证,为此,我们使用此工具(朋友是仓库的所有者)
该脚本接收请求,检查登录名,如果它有效,则只需从gitlab容器注册表中进行拉取并运行docker-compose up
笔记
该工具并不完美,无论您选择哪种解决方案,无论您选择哪种解决方案,都可以直接从您的计算机或某些CI集成直接连接到群集并直接进行部署,所以我们正从docker转向使用kubernetes。要了解kubernetes如何为您提供帮助,可悲的是,还需要学习另外一层,但是如果您能够将不费吹灰之力的云或金属发布到almos上,它具有后备,扩展和其他功能,这是非常有希望的。
另外,
如果您不希望或不能使用容器注册表(强烈建议采用这种方式),则可以在执行它的.sh中使用相同的工具,先执行git pull,然后执行docker build或docker compose。最简单的方案是自己创建脚本,然后在其中将ssh传送到服务器,以zip格式上传文件,然后在服务器中运行它,请记住,Ubuntu在Microsoft商店中并且可以运行此脚本,但是其他解决方案更“独立”和可扩展,因此,请您选择!
1> rekiem87..:
有很多方法可以做到这一点,只需搜索CI / CD的任何工具即可。
最简单的方法是手动操作,连接到Linux服务器,git pull
编写代码,然后运行与本地运行相同的命令。
另一个选择是将docker映像推送到容器注册表,然后拉入docker服务器,您就可以开始了
编辑:
您应该真正看一下一些CI服务,例如,在我们的环境中,我们使用GitLab,当我们进行推送以掌握项目时,有一个gitlab.yml构建项目,然后进行推送:
image: docker:latest
services:
- docker:dind
stages:
- build
api:
variables:
IMAGE_NAME: git.lagersoft.com:4567/gumbo/vtae/api:${CI_BUILD_REF}
stage: build
only:
- master
script:
- docker build -t ${IMAGE_NAME} -f vtae.api/Dockerfile .
- docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN ${IMAGE_NAME}
- docker push ${IMAGE_NAME}
这样,我们只需要使用最新版本来拉入我们的服务器即可。
值得注意的是,docker本身并不处理发布部分,因此如果您要开始学习,您需要手动或使用某种工具(如gitlab,jenkins,circleci,亚马逊代码管道等任何CI工具)来完成。建议手动启动,然后集成一些CI工具。
编辑2
关于Visual Studio工具,我不建议将其用于本地开发以外的其他任何用途,因为是的,它只能在Windows中运行,并且只能在Visual Studio中使用(Rider最近才集成了它),因此请进行部署在Linux环境中,我们使用自己的docker和docker compose文件,无论如何它们都是基于默认值的,它们是这样的:
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY lagersoft.common/lagersoft.common.csproj lagersoft.common/
COPY vtae.redirect/vtae.redirect.csproj vtae.redirect/
COPY vtae.data/vtae.data.csproj vtae.data/
COPY vtae.common/vtae.common.csproj vtae.common/
RUN dotnet restore vtae.redirect/vtae.redirect.csproj
COPY . .
WORKDIR /src/vtae.redirect
RUN dotnet build vtae.redirect.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish vtae.redirect.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "vtae.redirect.dll"]
该docker文件复制所有相关项目(我讨厌复制部分,但与Microsoft的默认文件相同),执行构建并发布应用程序,另一方面,我们有一个docker-compose来添加一些服务(此文件必须位于解决方案文件夹中才能访问所有相关项目):
version: '3.4'
services:
vtae.redirect.redis:
image: redis
volumes:
- "./volumes/redirect/redis/data:/data"
container_name: vtae.redirect.redis
vtae.redirect:
image: vtae.redirect
depends_on:
- vtae.redirect.redis
build:
context: .
dockerfile: vtae.redirect/Dockerfile
ports:
- "8080:80"
volumes:
- "./volumes/redirect/data:/data"
container_name: vtae.redirect
entrypoint: dotnet /app/vtae.redirect.dll
有了这部分,只剩下要做一个提交,然后拉入服务器并运行docker-compose up
命令来运行我们的应用程序(您可以直接从docker文件中执行此操作,但是使用docker compose可以更轻松,更易于管理。
编辑3
为了在服务器中进行部署,我们使用了两个工具。
提交完成后,首先运行gitlab ci
它使构建在docker文件中指定,并将其推送到我们的Gitlab容器注册表,如果它是亚马逊,谷歌,azure等的容器注册表,则相同...
然后向生产中的服务器发出发布请求,该服务器在单独的端口中运行特殊工具
服务器收到发帖请求并对其进行验证,为此,我们使用此工具(朋友是仓库的所有者)
该脚本接收请求,检查登录名,如果它有效,则只需从gitlab容器注册表中进行拉取并运行docker-compose up
笔记
该工具并不完美,无论您选择哪种解决方案,无论您选择哪种解决方案,都可以直接从您的计算机或某些CI集成直接连接到群集并直接进行部署,所以我们正从docker转向使用kubernetes。要了解kubernetes如何为您提供帮助,可悲的是,还需要学习另外一层,但是如果您能够将不费吹灰之力的云或金属发布到almos上,它具有后备,扩展和其他功能,这是非常有希望的。
另外,
如果您不希望或不能使用容器注册表(强烈建议采用这种方式),则可以在执行它的.sh中使用相同的工具,先执行git pull,然后执行docker build或docker compose。最简单的方案是自己创建脚本,然后在其中将ssh传送到服务器,以zip格式上传文件,然后在服务器中运行它,请记住,Ubuntu在Microsoft商店中并且可以运行此脚本,但是其他解决方案更“独立”和可扩展,因此,请您选择!