Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【demo演示】一键发布netcore项目到Docker #6

Open
yuzd opened this issue Feb 16, 2019 · 13 comments
Open

【demo演示】一键发布netcore项目到Docker #6

yuzd opened this issue Feb 16, 2019 · 13 comments
Labels
good first issue Good for newcomers

Comments

@yuzd
Copy link
Owner

yuzd commented Feb 16, 2019

Docker只能针对linux服务器 centos7+ 和 ubuntu16.04+

docker发布是基于ssh实现的,所以不需要在linux服务器上安装agent
必须要服务器上安装了docker
我这里用centos 7 vmware虚拟机做测试演示
image

1.为了发布速度快 需要在服务器上提前安装好netcore runtime基础镜像

安装基础镜像的命令为:
docker pull microsoft/dotnet:{sdkVersion}-aspnetcore-runtime
我这里用的netcore的sdk版本是2.1
所以如下图:
image

2.创建一个netcore项目

image

image

2.在工程上点击右键然后选择 AntDeploy 发布

image

3配置AntDeploy

3.1添加一个环境 名字叫 测试

image

3.2在 测试环境里面添加 Linux服务器 这里我做测试就添加就是我的centos7 虚拟机

Host填入格式 IP:Pory (如果Port是默认的端口可以只填IP不填port)
UserName填入 root
Pwd 填入 root的对应的密码
image
注意:点击【Connect Test】按钮进行确认服务器可以成功链接,否则会发布失败

3.3进入 Docker Tab界面

image

注意:如果你的工程里面没有DockerFile那么就会用默认的DockerFile
如果你工程有DockerFile就会按照它去执行

在这个测试demo里面我工程没有DockerFile
所以我在Port里面填写了5002 代表是容器外露并使用5002端口
ASPNETCORE_ENVIROMENT 我填空 代表采用默认的 appsettings.json配置

点击 【Deploy】按钮进行发布
如下图所示:
image

确认服务器无误 点击 【是】开始执行一键部署
发布成功如下图:

image

可以查看发布详细LOG
`
18:01:17|INFO|The Porject ENTRYPOINT name:TestNetcoreDocker.dll
18:01:17|INFO|Start publish
18:01:17|INFO|用于 .NET Core 的 Microsoft (R) 生成引擎版本 15.9.20+g88f5fadfbe
18:01:17|INFO|版权所有(C) Microsoft Corporation。保留所有权利。
18:01:18|INFO| C:\Users\Administrator\source\repos\TestNetcoreDocker\TestNetcoreDocker\TestNetcoreDocker.csproj 的还原在 68.74 ms 内完成。
18:01:19|INFO| TestNetcoreDocker -> C:\Users\Administrator\source\repos\TestNetcoreDocker\TestNetcoreDocker\bin\Release\netcoreapp2.1\TestNetcoreDocker.dll
18:01:19|INFO| TestNetcoreDocker -> C:\Users\Administrator\source\repos\TestNetcoreDocker\TestNetcoreDocker\bin\Release\netcoreapp2.1\TestNetcoreDocker.Views.dll
18:01:19|INFO| TestNetcoreDocker -> C:\Users\Administrator\source\repos\TestNetcoreDocker\TestNetcoreDocker\bin\Release\netcoreapp2.1\publish\
18:01:19|INFO|publish success, ==> file://C:\Users\Administrator\source\repos\TestNetcoreDocker\TestNetcoreDocker\bin\Release\netcoreapp2.1\publish#link9
18:01:19|INFO|Start package
18:01:19|INFO|package success
18:01:19|INFO|Deploy Start
18:01:19|INFO|【Server】ssh Connecting 192.168.11.129...
18:01:20|INFO|【Server】ssh connect success:192.168.11.129
18:01:20|INFO|【Server】Changed directory to publisher/testnetcoredocker/
18:01:20|INFO|【Server】uploaded 1 %
18:01:20|INFO|【Server】uploaded 2 %
18:01:20|INFO|【Server】uploaded 3 %
18:01:20|INFO|【Server】uploaded 4 %
18:01:20|INFO|【Server】uploaded 6 %
18:01:20|INFO|【Server】uploaded 7 %
18:01:20|INFO|【Server】uploaded 8 %
18:01:20|INFO|【Server】uploaded 9 %
18:01:20|INFO|【Server】uploaded 10 %
18:01:20|INFO|【Server】uploaded 20 %
18:01:20|INFO|【Server】uploaded 30 %
18:01:20|INFO|【Server】uploaded 40 %
18:01:20|INFO|【Server】uploaded 50 %
18:01:20|INFO|【Server】uploaded 60 %
18:01:20|INFO|【Server】unzip -q publisher/testnetcoredocker/publish.zip
18:01:20|INFO|【Server】uploaded 70 %
18:01:20|INFO|【Server】uploaded 80 %
18:01:20|INFO|【Server】uploaded 90 %
18:01:20|INFO|【Server】uploaded 100 %
18:01:20|INFO|【Server】unzip success: publisher/testnetcoredocker/publish/
18:01:20|INFO|【Server】create docker file: publisher/testnetcoredocker/publish/Dockerfile
18:01:20|INFO|【Server】FROM microsoft/dotnet:2.1-aspnetcore-runtime
18:01:20|INFO|【Server】COPY . /publish
18:01:20|INFO|【Server】WORKDIR /publish
18:01:20|INFO|【Server】ENV ASPNETCORE_URLS=http://:5002
18:01:20|INFO|【Server】EXPOSE 5002
18:01:20|INFO|【Server】ENTRYPOINT ["dotnet", "TestNetcoreDocker.dll"]
18:01:20|INFO|【Server】create docker file success: publisher/testnetcoredocker/publish/Dockerfile
18:01:20|INFO|【Server】sudo docker build --no-cache --rm -t testnetcoredocker -f publisher/testnetcoredocker/publish/Dockerfile publisher/testnetcoredocker/publish/
18:01:20|INFO|【Server】Sending build context to Docker daemon 2.762MB
18:01:20|INFO|【Server】Step 1/6 : FROM microsoft/dotnet:2.1-aspnetcore-runtime
18:01:20|INFO|【Server】 ---> c14bf44dc939
18:01:20|INFO|【Server】Step 2/6 : COPY . /publish
18:01:21|INFO|【Server】 ---> 13b701b957a2
18:01:21|INFO|【Server】Step 3/6 : WORKDIR /publish
18:01:21|INFO|【Server】 ---> Running in 31f5835f55a3
18:01:21|INFO|【Server】Removing intermediate container 31f5835f55a3
18:01:21|INFO|【Server】 ---> 2befa09430fb
18:01:21|INFO|【Server】Step 4/6 : ENV ASPNETCORE_URLS=http://
:5002
18:01:21|INFO|【Server】 ---> Running in ea3aacc53d5d
18:01:21|INFO|【Server】Removing intermediate container ea3aacc53d5d
18:01:21|INFO|【Server】 ---> aea1419b8028
18:01:21|INFO|【Server】Step 5/6 : EXPOSE 5002
18:01:21|INFO|【Server】 ---> Running in f31536a15815
18:01:21|INFO|【Server】Removing intermediate container f31536a15815
18:01:21|INFO|【Server】 ---> cb3532775261
18:01:21|INFO|【Server】Step 6/6 : ENTRYPOINT ["dotnet", "TestNetcoreDocker.dll"]
18:01:21|INFO|【Server】 ---> Running in ea1bcfd23cc1
18:01:21|INFO|【Server】Removing intermediate container ea1bcfd23cc1
18:01:21|INFO|【Server】 ---> f597ea70abad
18:01:21|INFO|【Server】Successfully built f597ea70abad
18:01:21|INFO|【Server】Successfully tagged testnetcoredocker:latest
18:01:26|INFO|【Server】sudo docker run --name d_testnetcoredocker -d -p 5002:5002 testnetcoredocker:latest
18:01:26|INFO|【Server】c741f3e372273cb97a4c0a0fe1693530f1378890f7b6b7082116994541a558c2
18:01:27|INFO|publish Host: 192.168.11.129 End
18:01:27|INFO|Deploy End

`

5 检测发布docker后网站是否打开成功

image

编译是在本机完成的,编译成果物+Dockfile 到服务器上进行image生成

@yuzd yuzd added the good first issue Good for newcomers label Feb 18, 2019
@wangjin0223
Copy link

我这边老报错发布的时候。用vs发布没啥问题
用antdeploy报错是
16:08:27|ERROR|package fail:未能加载文件或程序集“System.IO.Compression, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”或它的某一个依赖项。系统找不到指定的文件。

是不是我的问题还是

@yuzd
Copy link
Owner Author

yuzd commented Feb 23, 2019

@wangjin0223 打包方法出错了。打包是用了这个dll 你是用的vs2017 还是 2015??你有qq吗 我联系你

@yuzd
Copy link
Owner Author

yuzd commented Mar 2, 2019

@wangjin0223 已修复这个问题了 请更新使用>=2.8版本

@richie86
Copy link

请问如何支援类似这样的docker compose
`version: '3.4'

services:
testapp:
image: ${DOCKER_REGISTRY-}testapp
build:
context: .
network: host
dockerfile: TestApp/Dockerfile

`

@yuzd
Copy link
Owner Author

yuzd commented Jul 26, 2019

@richie86 不支持docker compose 没有考虑支持 抱歉

@richie86
Copy link

感谢开源,我fork后改改!

@bsxfbs
Copy link

bsxfbs commented Aug 29, 2019

老大,我是dotnetCore2.1,通过Docker部署,在第一步发布的时候提示我依赖包有问题,仔细看一下都是我Nuget依赖里已经有的,请问怎么解决呀

16:53:45|ERROR|E:\Develop\TMS_YUNBAI\Main\Main.csproj : error NU1107: Microsoft.AspNetCore.DataProtection 中检测到版本冲突。直接安装/引用 Microsoft.AspNetCore.DataProtection 2.1.1 到项目 Main 可解决此问题。
16:53:45|ERROR|E:\Develop\TMS_YUNBAI\Main\Main.csproj : error NU1107: Main -> Microsoft.AspNetCore.Antiforgery 2.1.1 -> Microsoft.AspNetCore.DataProtection (>= 2.1.1)
16:53:45|ERROR|E:\Develop\TMS_YUNBAI\Main\Main.csproj : error NU1107: Main -> Microsoft.AspNetCore.App 2.1.0 -> Microsoft.AspNetCore.DataProtection (= 2.1.0).

实际这些包已经在我项目的 依赖项 > Nuget有了呀

@yuzd
Copy link
Owner Author

yuzd commented Aug 29, 2019

@bsxfbs 这个错误是 dotnet publish 报出来的错误,根据提示 你的包引用有问题,你升级下包

@bsxfbs
Copy link

bsxfbs commented Aug 29, 2019

@yuzd 我手工发布项目到文件系统是没有问题的,而且他提示我升级的包和版本,也是我项目已有的呢

@yuzd
Copy link
Owner Author

yuzd commented Aug 29, 2019

@bsxfbs 这个提示是dotnet publish 抛出来的错误,命令 你可以在日志里面查到。你可以动手自己敲敲命令。(关于为什么vs下没问题,这个我也搞清楚 ,如果你能搞清楚他是用怎么样的publish的命令,可以讨论下)

@bsxfbs
Copy link

bsxfbs commented Aug 30, 2019

@yuzd 嗯嗯,是发布的问题,是因为没有正确引用SDK,修改工程文件.csproj就好了,感谢~很棒的插件

@bsxfbs
Copy link

bsxfbs commented Sep 20, 2019

老大,我想把同样的项目,分别发布一个测试环境,一个生产环境,使用Dockerfile,但项目发布目录下只认一个dockerfile,有办法吗

@yuzd
Copy link
Owner Author

yuzd commented Sep 20, 2019

@bsxfbs 在群内讨论?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers
Projects
None yet
Development

No branches or pull requests

4 participants