使用Dockerfile构建镜像 & 使用docker-compose 一键部署IM项目

本文讲解:使用Dockerfile构建镜像 & 使用docker-compose 一键部署IM项目。

im项目地址:xzll-im ,欢迎志同道合的开发者 一起 维护,学习,欢迎star 😄

1、Dockerfile编写与镜像构建&容器运行

Dockerfile 是构建镜像的基础 ,首先创建两个空文件夹,用于存放im-connect和im-business的jar: image.png 之后使用 maven命令打包 注意此处选择 profile为 test 对应我的虚拟机环境

mvn celan package -P test: image.png

之后上传打好的jar到虚拟机: ``` sudo scp /Users/hzz/myselfproject/im-开源04/xzll-im-parent/im-connect/im-connect-service/target/im-connect-service.jar root@172.30.128.65:/usr/local/softhzz/xzll-im/jar-file/docker-file-way/connect

sudo scp /Users/hzz/myselfproject/im-开源04/xzll-im-parent/im-business/im-business-service/target/im-business-service.jar root@172.30.128.65:/usr/local/softhzz/xzll-im/jar-file/docker-file-way/business

```

之后分别编写Dockerfile文件,内容如下:

```bash

business 的 Dockerfile 内容

FROM openjdk:11-jre-slim # jdk镜像 VOLUME /tmp # 挂载 COPY im-business-service.jar business.jar ENTRYPOINT ["java", "-jar", "/business.jar"] # 启动命令 EXPOSE 8083 # 暴露端口 与服务端口保持一致

connect的 Dockerfile 内容

FROM openjdk:11-jre-slim # jdk镜像 VOLUME /tmp # 挂载 COPY im-connect-service.jar connect.jar ENTRYPOINT ["java", "-jar", "/connect.jar"] # 启动命令 EXPOSE 10001 # 暴露端口 与服务端口保持一致 ``` image.png

现在这俩服务的 Dockerfile就就绪了之后我们制作镜像:

```bash . 代表当前目录 前边镜像名 后边版本号

docker build -t im-business:0.0.2 . docker build -t im-connect:0.0.2 . ![image.png](https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/44a0c8c317f24f9b9c72ff720040d72a~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=3452&h=1640&s=450498&e=png&b=000000) 使用docker images看一下 有没有: ![image.png](https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f13bb51807f04640b3c8a24ba97ed006~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1574&h=440&s=127839&e=png&b=010101) 使用镜像启动容器: bash docker run -d -p 8083:8083 --restart always --name im-business im-business:0.0.2 docker run -d -p 10001:10001 --restart always --name im-connect im-connect:0.0.2 ![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/01bbd831efa94cb1967bc320985a4bba~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=3304&h=830&s=363736&e=png&b=010101) 查看启动日志 docker logs -f --tail 50 im-business docker logs -f --tail 50 im-connect ``` image.png

发消息试试能不能走通流程: image.png 可以看到是没问题的。至此Dockerfile方式构建镜像 启动容器就说完了 但是这种方式比较繁琐,每一个服务都得搞个Dockerfile 服务多了头炸了。所以有了服务编排工具,常见的: - docker-compose (姑且可以将其归纳为容器编排 但是论功能上 和k8s还是差挺远的,k8s后续会用) - k8s - OpenShift - Docker Swarm

下边就以docker-compose开刀 方便轻松管理多服务的情况!

2、docker-compose安装与容器编排

为什么使用docker-compose

在上边我们介绍了使用 Dockerfile 构建 docker 镜像 然后 在镜像基础上启动应用程序,乍看起来已经能够满足我们的日常需求了,无论需要什么环境,在 Dockerfile 里逐步构建,然后 build、run,就 ok 了,也满足了我们docker 隔离性、快速部署的要求,为什么还需要docker-compose呢?

首先我们要知道docker 是轻量化的应用程序,docker 官方推荐每个 docker 容器中只运行一个进程,那么就是说,我们需要分别为我们的应用以及中间件创建单独的 docker 容器,然后分别启动它,想象一下,构建好 docker 之后,每次启动我们的网站,如果有n个服务 那么就得docker run n次,是不是很繁琐?而且此时这几个 doc

使用Dockerfile制作镜像并上传到私有仓库的步骤如下: 1. **编写Dockerfile**: 首先,创建一个名为`Dockerfile`的文件,并在其中编写构建镜像的指令。例如: ```dockerfile # 使用官方Python基础镜像 FROM python:3.9-slim # 设置工作目录 WORKDIR /app # 复制当前目录的内容到工作目录 COPY . /app # 安装依赖包 RUN pip install --no-cache-dir -r requirements.txt # 暴露端口 EXPOSE 8000 # 启动命令 CMD ["python", "app.py"] ``` 2. **构建镜像**: 在终端中导航到包含`Dockerfile`的目录,并运行以下命令来构建镜像: ```sh docker build -t your-image-name:tag . ``` 其中,`your-image-name`是你的镜像名称,`tag`是版本标签。 3. **推送镜像到私有仓库**: 假设你已经有一个私有Docker仓库,并且其地址为`your-private-registry.com`,你需要先登录到该仓库: ```sh docker login your-private-registry.com ``` 登录成功后,使用以下命令标记镜像: ```sh docker tag your-image-name:tag your-private-registry.com/your-repo/your-image-name:tag ``` 最后,将镜像推送到私有仓库: ```sh docker push your-private-registry.com/your-repo/your-image-name:tag ``` 4. **从私有仓库拉取镜像**: 其他用户可以通过以下命令从你的私有仓库拉取镜像: ```sh docker pull your-private-registry.com/your-repo/your-image-name:tag ``` 5. **使用镜像**: 拉取镜像后,可以使用以下命令运行容器: ```sh docker run -d -p 8000:8000 your-private-registry.com/your-repo/your-image-name:tag ``` 这样,你就完成了使用Dockerfile制作镜像并上传到私有仓库的整个流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值