我在装有Windows Docker的Windows 10 PC上使用Visual Studio 2017创建了一个具有Linux docker支持的.Net核心应用程序。我可以使用以下命令来运行它(控制台应用程序)
docker run MyApp
我有一台装有Docker的Linux机器。如何将.Net核心应用程序发布到Linux计算机?我需要在Linux机器上发布并运行dockerized应用程序。
Linux已安装以下docker软件包。
$ sudo yum list installed "*docker*" Loaded plugins: amazon-id, rhui-lb, search-disabled-repos Installed Packages docker-engine.x86_64 17.05.0.ce-1.el7.centos @dockerrepo docker-engine-selinux.noarch 17.05.0.ce-1.el7.centos @dockerrepo
答案 0 :(得分:5)
有很多方法可以做到这一点,只需搜索用于CI / CD的任何工具即可。
最简单的方法是手动操作,连接到Linux服务器,编写代码git pull
,然后运行与本地运行相同的命令。
其他选择是将docker映像的push处理到容器注册表中,然后拉入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}
有了这个,我们只需要在服务器上安装最新版本即可。
值得注意的是,泊坞窗本身无法处理发布部分,因此如果您要启动,则需要手动或使用某些工具(如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
要在服务器中进行部署,我们使用两个工具。
注释
该工具并不完美,无论您选择哪种解决方案,无论您选择哪种解决方案,我们都可以从泊坞窗迁移到使用kubernetes,而您可以直接从计算机或某些CI集成连接到集群并直接进行部署您开始了解kubernetes如何为您提供帮助,可悲的是还需要学习另一层,但是如果您能够将任何云或金属不费力地发布到almos上,它具有后备,扩展和其他功能,那将是非常有前途的。>
也 如果您不希望或不能使用容器注册表(我强烈建议采用这种方式),则可以在执行它的.sh中使用相同的工具,先执行git pull,然后执行docker build或docker compose。 最简单的方案是自己创建脚本,然后在其中将ssh传送到服务器,以zip格式上传文件,然后在服务器中运行它,请记住,Ubuntu在Microsoft商店中并且可以运行此脚本,但是其他解决方案更具“独立性”和可扩展性,因此,请选择!