Docker玩法 - 项目发布之旅

Docker玩法 — 项目发布之旅

通过前文可以对docker有个了解,并运行一些自己喜欢的东西了,那这么有趣的玩具,我们必须加一点自己料近去。
但是在玩之前,需要知道一个东西,那就是dockerfile文件,这个文件是用来生成docker镜像用的,通过修改其中的命令
我们就可以把我们自己的料加镜像之中。接下来我们将围绕这个文件开始我们的旅程,那么扬帆启航了。

准备

在旅行之前我们肯定需要准备行囊,那么我这次将准备了一个Go服务 和 一个.net core 服务,两个都是非常简单的webapi服务

测试

第一站,dockerfile

在dockerfile中,所有的命令都需要大写,常用命令如下

1. FROM 宿主环境,也就是代码运行的环境,Go项目就是Gloang,C#项目就是aspnet
2. MAINTAINER 个人信息,比如名字或邮箱
3. WORKDIR 是镜像内的工作目录
4. ADD 追加本地内容到指定镜像目录 第一个参数是本地路径,第二个是镜像目录
5. COPY 同上但不会自动解压缩包,不能访问网络
6. RUN 构建镜像时执行命令
7. EXPOSE 暴露容器端口 可以是一个 也可以是多个
8. CMD 构建镜像完毕后执行命令

接下来给出 go 服务的dockerfile 文件格式

FROM golang:latest
MAINTAINER xiao4_800k <840076909@qq.com>
WORKDIR /go/src/dockertest
ADD dockertest/ /go/src/dockertest
RUN go build -o .
EXPOSE 80
CMD ["./dockertest"]

那么我们对照着说一下用到的这些命令

FROM  指定了宿主环境为golang
MAINTAINER  写入了作者的个人信息
WORKDIR 指定工作目录,这里由于go的特性写的这个路径,根据需求有所差异
ADD  我将本地dockertest目录内容追加到src中
RUN  go语言执行编译
EXPOSE 服务暴漏端口 80
CMD  执行服务

第二站,编译镜像

找到dockerfile所在文件夹 执行命令 docker build -t gotest .

 docker build 是编译镜像指令
 -t 指定名字和标签 格式 -t name:tag 我这里只指定了名称
 . 代表当前路径  

测试

执行命令后我们再查看镜像列表 使用命令或面板都可以

测试
测试

我们的服务已经成功载入镜像中

第三站,启动服务

使用 docker run -p 44444:80 e0fdd56d5475 启动镜像

 docker run 是固定的启动命令
 -p 用于指定本地端口和镜像的暴漏端口 
 最后加上镜像ID,在浏览器中访问一下

测试
测试

我们再修改一下 启动命令
docker run --name gotest -d -p 44444:80 e0fdd56d5475

这里增加了 两个参数

 --name 用于指定容器的名称
 -d 用于指定容器在后台运行

测试
测试

容器已经启动了
我们在浏览器中看一下效果

测试

第四站,容器和镜像的管理

如果你使用的是window版本,那么他有一个管理面板,可以轻松的对容器和镜像进行管理,然后如果是在Linux中可能就需要使用命令来操作了,这个看个人喜好

测试

命令参考上一篇

终点站 补充总结

至此我们已经把自己的服务成功搞进docker,但是你有没有发现一个问题,生成的镜像巨大,这无疑是非常不利的,所以后续我们就来玩玩镜像的优化

最后附上 .net core Dockerfile文件内容,是vs2019自动生成的,参考一下吧

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["CoreAPI/CoreAPI.csproj", "CoreAPI/"]
RUN dotnet restore "CoreAPI/CoreAPI.csproj"
COPY . .
WORKDIR "/src/CoreAPI"
RUN dotnet build "CoreAPI.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "CoreAPI.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "CoreAPI.dll"]
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao4-800k

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值