首页/新闻资讯/正文详情

初学者怎么用docker打包代码

发布时间:2026/9/27 22:55:15 来源:云帆数科 栏目:资讯中心
初学者怎么用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。不过这个就是纯文件内容了下期再讲吧希望对你有帮助

相关推荐

DeepSeek-V4.1-Flash: Pushing the Limits of KV Cache Compression
DeepSeek-V4.1-Flash: Pushing the Limits of KV Cache Compression

DeepSeek-V4.1-Flash: Pushing the Limits of KV Cache Compression 论文:DeepSeek-V4.1-Flash: Pushing the Limits of KV Cache Compression(arXiv:2609.19969,DeepSeek-AI,2026-09-17) 一句话:DeepSeek 又整了个"胃口很小、脑子很大"的模型——552B 的 Mo… · 2026/9/27 22:55:09

ChatGPT 与 OpenAI 模型全景:从 GPT 系列到 API 接入 TaoToken 的配置指南
ChatGPT 与 OpenAI 模型全景:从 GPT 系列到 API 接入 TaoToken 的配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:55:09

《On Java 中文版 基础卷》阅读笔记 安装 Java 和本书示例 02
《On Java 中文版 基础卷》阅读笔记 安装 Java 和本书示例 02

《On Java 中文版 基础卷》阅读笔记 安装 Java 和本书示例 02 2.1 编辑器 如果想要新建和修改 Java 文件,首先需要一个编辑器的软件。在安装 Java 的过程中,有时也需要利用编辑器来修改系统配置文件。 用于编程的编辑器种类千差万别,从全能… · 2026/9/27 22:55:03

华为NE05E/NE08E物理层时钟同步配置与故障排查实战
华为NE05E/NE08E物理层时钟同步配置与故障排查实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:31:14

自动语音识别(ASR)技术全解析:从原理到工程实践
自动语音识别(ASR)技术全解析:从原理到工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:31:14

Y7000P Ubuntu 18.04 WiFi驱动修复:AIC8800编译安装教程
Y7000P Ubuntu 18.04 WiFi驱动修复:AIC8800编译安装教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:31:08

5分钟搞定ESP32/ESP8266开发环境:Arduino IDE 2.0国内镜像配置指南
5分钟搞定ESP32/ESP8266开发环境:Arduino IDE 2.0国内镜像配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:31:08

VSCODE加ESP-IDF配置指南:ESP32开发环境搭建与调试
VSCODE加ESP-IDF配置指南:ESP32开发环境搭建与调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:31:02

Linux 上 WFDB 心电信号分析实战:从 wfdb.tar.gz 到 HRV 频域分析
Linux 上 WFDB 心电信号分析实战:从 wfdb.tar.gz 到 HRV 频域分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 23:31:02

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码