前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何用Docker打包部署自己写的项目?

如何用Docker打包部署自己写的项目?

作者头像
Python进击者
发布2022-04-18 15:43:22
5.4K0
发布2022-04-18 15:43:22
举报
文章被收录于专栏:JAVAandPython君

大家好,我是kuls。

今天我们主要来聊一聊关于Docker相关的内容。

相信很多读者朋友都有自己写过项目,也曾想过如何使用Docker来进行部署。

但是网络上很多文章都写得零零碎碎,反倒让人有些懵逼。

今天K哥用通俗易懂的话语来把大体的思路给大家理一遍,这也是讲的最基础的打包部署。

你必须掌握的内容!

首先想要使用Docker来打包部署,那么你就得去了解一下Docker,至少要会安装吧。

K哥在很早很早以前写过一篇关于Docker的基本操作,大家可以看看:Python分布式爬虫-必须掌握的Docker基础!

你了解了Docker的基本操作,你还需要去了解一下Dockerfile。

关于Dockerfile的基本语法学习,你可以看看https://www.runoob.com/docker/docker-dockerfile.html

首先k哥得给你说的就是,我们的打包都是基于Dockerfile来实现的。

也就是说,我们需要在Dockerfile里面完成我们所有需要的东西,有哪些东西呢?

例如运行环境、代码或者编译后的运行文件等等。

首先我们需要去配置的就是我们的运行环境,如何配?

通过FROM关键词,例如我需要一个python3.6的环境:

代码语言:javascript
复制
FROM python:3.6

我们只需要在Dockerfile里面编写如上的代码,就能够拉取到一个python3.6的环境。

同理其他语言也是,例如.net:

代码语言:javascript
复制
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base

还有前端项目:

代码语言:javascript
复制
FROM nginx

具体的环境大家可以通过docker search 来进行搜索。

这是我们的第一步。

下一步我们也许会去定一个根目录,注意是也许,不是一定。

代码语言:javascript
复制
WORKDIR /app

WORKDIR的意思就是让后面的路径成为根路径,注意哦,这里的路径是docker里面的路径。

然后,我们就会把代码或者是编译完成之后的运行文件COPY到docker当中

代码语言:javascript
复制
COPY . .

上面就是COPY+本地路径 +docker中的路径

也就是本机当前路径文件,拷贝到docker中的路径中。

在Python中,我们还需要去安装一些Python库,所以你可能还需要这个操作:

代码语言:javascript
复制
RUN pip install -r requirements.txt

RUN 后面接的就是一个命令行。

安装完成之后,你需要去暴露一下端口

代码语言:javascript
复制
EXPOSE 80

这样能够让我们后续将docker中的端口和本机中的端口进行映射,从而我们可以通过本机ip+端口来进行访问操作。

最后一步就是运行,当然如果是Python我们就可以直接运行了,但是有一些语言框架可能不行,因为它可能还需要进行一次编译,然后再运行编译后的文件,所以这里大家需要注意了。

如果你不想在docker打包过程中编译,你也可以在本机中编译完,直接运行编译后的文件。

当然在Python中我们直接运行Python即可。

代码语言:javascript
复制
CMD ["python","main.py"]

在.NET环境下可能就是这样的姿势:

代码语言:javascript
复制
ENTRYPOINT ["dotnet", "HubService.dll"]

在前端项目中,我们就不需要再去运行啥,直接部署到Nginx上就行了,例如下面:

代码语言:javascript
复制
FROM nginx
COPY dist/ /usr/share/nginx/html/
COPY nginx/default.conf /etc/nginx/conf.d/default.conf

也就是我们自己在本机上写个Nginx的配置文件,然后COPY过去就行了。

好了,上面大致就是打包的整个过程与思路,每个框架,每个语言都会有不一样,所以没有准确的答案,准确的答案在官方文档中一般有所体现。

这里也给大家汇总一下python的dockerfile

代码语言:javascript
复制
FROM python:3.6
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
EXPOSE 80
CMD ["python","app.py"]

编写完dockerfile,我们一般喜欢放在需要打包的地方的根路径,然后直接运行

代码语言:javascript
复制
docker build -t 你想要的名字 . 

docker build -t pythondemo . 

运行之后,docker会自动完成dockerfile里面的每一个步骤。

打包完成后,我们就可以看到images。

大家直接docker images 即可。

随后,我们就可以来创建容器了。

代码语言:javascript
复制
docker run  -d -p 5000:80 pythondemo

docker run -d -p 要映射的本机端口:docker中项目运行的端口 镜像名称

如果你映射完后,还是发现无法访问,可以看看防火墙或者端口是否被占用。你也可以尝试去映射docekr中的80端口。

映射完成之后就可以通过你本机的ip+端口进行访问了!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python进击者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档