新闻详情

新闻详情

首页 / 资讯中心 / 详情

初学者怎么用docker打包代码

发布时间:2026/11/16 7:14:52来源:尧图网络
初学者怎么用docker打包代码
如果你是处学者连docker是什么都不知道那么我这篇博客将直接上手docker帮助打包第一个项目代码。首先我们先要明白docker它是什么东西主要干什么。初学者理解docker只要知道他是一个可以让你的代码放在别人的电脑上也能顺利运行的东西那么干的就是把你电脑上的代码运行的环境一起打包到别人的电脑上这样听起来有点麻烦环境这么大的一个东西要放到被人电脑上一个还好很多个的话不直接炸了吗哎这就是docker的最便捷的地方他不是给每个程序都复制一整套操作系统而是通过镜像、分层和复用把真正需要的东西组织起来。好了涉及到专业名词了接下来让我镜像是什么他有什么用首先镜像和镜子一点边都不沾你只要知道他是一个做月饼模具可以做出同一个形状的月饼。就像镜像里面提前准备好了程序运行所需要的环境和文件。根据同一个镜像我们可以做出一个、两个甚至很多个环境相同的容器做出来下一步就是吃了哈哈月饼可以说吃但容器就是用了那容器是什么呢简单来说容器就是根据镜像这个模板创建出来的一个实际运行环境你的代码会在这个环境里真正运行起来。所以你可以先记住一句话镜像是模具容器是根据模具做出来并运行起来的东西。那这个和打包有什么关系聪明的你肯定想到了可以将你代码运行所需要的环境、依赖和相关文件打包成一个Docker镜像只要把你的镜像传到别人的电脑里就可以运行你的代码了没错这就是打包的核心概念其余的步骤都在围绕怎么让这个打包出来的东西更小、更高效以及怎么让我们管理和运行这些容器更加方便。好了废话不多说直接上命令假如说这是你的一个项目代码结构分为客户端和服务端两个部分那应该怎么打包呢很明显客户端和服务端虽然属于同一个项目但它们实际上是两个需要独立运行的程序所以我们不能简单地把它们全部塞进一个容器里。一般来说我们会分别为客户端和服务端构建镜像也就是一个项目对应两个镜像。那问题来了镜像到底怎么构建这时候就需要用到Dockerfile。Dockerfile是什么一句话就是告诉docker,这个镜像我要使用什么基础环境、把哪些代码复制进去、安装哪些依赖、怎么编译程序以及容器启动之后应该执行什么命令。例如# 1. 准备 Go 编译环境 FROM golang:alpine # 2. 设置容器里的工作目录 WORKDIR /app # 3. 把 go.mod 复制进去 COPY go.mod ./ # 4. 下载项目依赖 RUN go mod download # 5. 把项目代码复制进去 COPY . . # 6. 编译服务端程序 RUN go build -o server ./cmd/server # 7. 声明服务端使用 8080 端口 EXPOSE 8080 # 8. 容器启动时运行 server CMD [./server]这样虽然看起来很麻烦但是你只需要知道一个dockerfile文件有什么就行至于怎么写你当然可以直接发给ai按照格式书写。接下来就是客户端了和此格式可能会有些出入主要还是以ai为主。其实这样写就可以把这个文件上传到虚拟机可以自行搜索怎么把windows上的文件上传倒虚拟机里然后通过命令来构建环境docker build -f Dockerfile.server -t chat-room-server .如果是客户端docker build -f Dockerfile.client -t chat-room-client .可以把这个过程理解成Dockerfile 项目代码 ↓ docker build ↓ Docker 镜像其中docker build 开始构建镜像 -f Dockerfile.client 指定使用 Dockerfile.client -t chat-room-client 给构建出来的镜像命名 . 使用当前目录作为构建上下文镜像构建完成之后可以通过docker images 来查看镜像是否构建完成镜像构建完成之后就可以开始做“月饼”了就是构建并启动容器docker run -d --name chat-room-server -p 8080:8080 chat-room-server这里要涉及到一个特别的点-p 8080:8080这两个8080 不是同一个东西分别代表-p 宿主机端口 : 容器端口 ↑ ↑ 8080 8080也就是把虚拟机宿主机的 8080 端口映射到容器里的 8080 端口。这个要根据你的实际情况来写到这里镜像和容器都准备好了那是不是就可以直接运行了呢哈哈还差最后一个小问题。我们在 Windows 上运行客户端和服务端时它们本质上是在同一台电脑上通过localhost:8080就可以找到对方但是现在把它们放进 Docker 之后客户端和服务端变成了两个独立的容器它们需要先处在同一个 Docker 网络里客户端才能找到服务端。所以接下来我们要做的事情就是创建一个 Docker 网络把客户端和服务端放进去让它们能够互相通信。听起来是不是很麻烦但实际上就一个命令docker network create chat-room-net然后把服务端容器加入这个网络docker network connect chat-room-net chat-room-server因为客户端是每加入一个都需要运行一个容器的所以直接启动客户端容器时指定这个网络docker run --rm -it \ --network chat-room-net \ -e SERVER_ADDRchat-room-server:8080 \ chat-room-client这样一顿操作之后你的代码就可以在任意电脑上的虚拟机里成功运行了不过你是不是觉得非常麻烦有什么方法可以直接一键启动吗有的兄弟有的。他就是Compose。不过这个就是纯文件内容了下期再讲吧希望对你有帮助
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/16 6:47:19

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉