8号码库
8号码库

暂无菜单项

首页/社区/广场/技术交流/
打开 MD 链接

Docker 容器化源码部署:Dockerfile 与 Compose 编排实战

maoku
发布于 2周前更新于 2周前
774

「在我机器上能跑」是部署中最头疼的问题。Docker 把应用和它的运行环境一起打包成镜像,到任何装了 Docker 的机器上都能一致运行,从根本上消灭环境差异。

一、安装 Docker

curl -fsSL https://get.docker.com | bash
systemctl enable --now docker

再安装 Compose 插件(新版已内置为 docker compose 子命令)。

二、编写 Dockerfile

以一个 Node 应用为例,在源码根目录创建 Dockerfile:

FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-alpine
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=build /app/package*.json ./
RUN npm ci --omit=dev
EXPOSE 3000046
CMD ["node", "dist/server.js"]

要点:多阶段构建减小镜像体积;用 alpine 基础镜像;依赖层与源码层分离以利用构建缓存。

三、构建与运行

docker build -t myapp:1.0 .
docker run -d --name myapp -p 3000:3000 --restart=always myapp:1.0

--restart=always 实现开机自启与崩溃自动拉起。

四、数据卷与配置

docker run -d -v /data/myapp:/app/data -v /etc/myapp/config:/app/config myapp:1.0

把可变数据(数据库文件、上传目录、配置)挂载到宿主机,容器本身保持无状态,升级时直接换镜像即可。

五、docker-compose 编排多服务

services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      DB_URL: mysql://db:3306/app
    depends_on:
      - db
  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - dbdata:/var/lib/mysql

volumes:
  dbdata:

一条命令拉起整套服务:docker compose up -d。

六、常用运维命令

  • 查看日志:docker logs -f myapp
  • 进入容器排查:docker exec -it myapp sh
  • 查看资源占用:docker stats
  • 清理无用镜像:docker image prune

容器化的最大收益是「一致性」和「可迁移」。配合 Compose 编排,多服务项目也能一条命令完成部署,非常适合团队协作和持续集成。

0 / 600
细中粗
5 讨论
热门最新
总结
评论中讨论了Dockerfile和Docker Compose的使用,包括数据卷、环境变量和详细教程。
微信用户

这个教程对于初学者来说非常友好,谢谢!

9/3
野生码农

关于数据卷的使用,有什么需要注意的吗?

9/3
秃头码农

Docker Compose的使用很方便,能否详细介绍一下?

9/3
暴躁码农

请问Dockerfile中如何设置环境变量?

9/3
温柔码农

这个教程非常详细,学到了很多关于Dockerfile的知识。

9/3
热门帖子
  • 8号码库社区版规与发帖指引(新人必读)

    8
    置顶
    8/27326 浏览
  • 半夜两点还在调源码,我劝你这几个瞬间别硬刚

    3
    9/13531 浏览
  • WordPress 源码手动安装与性能优化全流程

    6
    9/34.7K 浏览
  • 宝塔面板从零部署网站源码:LNMP 环境一键搭建全流程

    5
    9/3510 浏览
  • 前端项目源码构建与部署:Vue/React + Nginx 静态托管与 SSR

    3
    9/3375 浏览
  • Docker 容器化源码部署:Dockerfile 与 Compose 编排实战

    5
    9/3773 浏览
  • Node.js 项目源码部署实战:PM2 进程守护 + Nginx 反向代理

    3
    9/3595 浏览
  • 从源码部署 Java Spring Boot:打包 Jar 包 + systemd 守护

    3
    9/3635 浏览
  • 半小时上线个人博客/知识库:通用部署流程(附流程图)

    2
    8/252.4K 浏览
  • 自己搭轻量网盘:Cloudreve 开箱即用(附架构图)

    5
    8/28463 浏览
8号码库
8号码库
首页
源码下载
交流社区
网址导航
版权所有 8号码库
隐私政策常见问题联系我们
捐赠❤️