iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >Docker如何部署多容器通信
  • 790
分享到

Docker如何部署多容器通信

2024-04-02 19:04:59 790人浏览 薄情痞子
摘要

这篇文章主要介绍了Docker如何部署多容器通信的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Docker如何部署多容器通信文章都会有所收获,下面我们一起来看看吧。原因是这样的

这篇文章主要介绍了Docker如何部署多容器通信的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Docker如何部署多容器通信文章都会有所收获,下面我们一起来看看吧。

原因是这样的

想要部署一个mocker平台,就在朋友的推荐下选择了 api-mocker 这个现成的项目

该项目分为服务端node、客户端Vue、以及数据库mongoDB

在尝试直接部署的时候发现需要装一大堆的环境,node、monGoNginx啊,特别的麻烦,之前简单的使用过docker,就在想能不能用docker免环境直接部署呢?于是就有了这次的尝试

多容器通信

该项目分为3个部分,于是就要建立3个容器(node、mongo、nginx)

那容器之间怎么实现通信呢?

 # 通过link指令建立连接
 $ docker run --name <name> -d -p <path1>:<path2> --link <containername>:<alias> <containername:tag/imageid>

- --link 容器连接指令
- < containername > : < alias >
- < 被连接容器名称 > : < 容器访问别名 >
- 注:别名在主动建立连接的容器中访问被连接容器使用
- 以下指令在容器检测连接状态
$ curl <alias>

接下来我们开始尝试部署

实现过程

1、构建mongo容器

2、构建node容器并与mongo容器建立连接

3、构建nginx容器并与node容器建立连接

构建mongo容器

我们先拉取mongo镜像

$ docker pull mongo:latest

下面我们让这个镜像跑起来

 $ docker images
 repository   tag     image id   created    size
 mongo    latest    05b3651ee24e  2 weeks ago   382mb

--auth 指令开启了mongo的连接身份校验 开启校验 是由于 node 跨容器连接时 不设置身份校验 开启服务端无法连接上mongo数据库

```
nodejs.mongoerror: [egg-mongoose]authentication failed.
```

查看容器

$ docker ps -a
container id  image    command     created    status      ports      names
0d440be90935  mongo    "docker-entrypoint.s…" 14 hours ago  up 14 hours     0.0.0.0:27017->27017/tcp mock-mongo

由于我们mongo开启了身份验证,所以我们要进入mongo容器配置一下node连接时使用的账号

$ docker exec -it mock-mongo /bin/bash
$ mongo admin
# 创建manager user
$ db.createuser({user:"admin", pwd:"admin",roles:[{role:"admin",db:"admin"}]})
# 账号授权
$ db.auth('admin','admin')

现在我们的mongo数据库已经跑起来了,接下来我们就要建立node容器了

构建node容器并与mongo容器建立连接

在开始构建node容器前我们要先约定好mongo容器别名,端口号以及登录账号密码

  • mongo容器别名:

  • db mongo端口号:27017

  • 账号密码:admin:admin

我们先修改node服务端的配置

文件配置 dockerfile/api-mocker/server/config/config.default.js 修改mongo连接配置,db为预先设定的mock-mongo容器的别名

 mongoose: {
 url: 'mongodb://admin:admin@db:27017/api-mock?authsource=admin'
 },

现在我们编写一个dockerfile文件来构建镜像

 # 指定基础镜像
 from node:latest
 
 # 维护者
 maintainer qiushiyuan1994@qq.com
 
 # 工作目录
 workdir /www
 
 # 将本地文件添拷贝到容器中,不会解压
 copy api-mocker node-server/api-mocker
 
 expose 7001
 
 workdir /www/node-server/api-mocker/server
 
 run npm install
 
 workdir /www/node-server/api-mocker
 
 # 构建容器后调用,在容器启动时才进行调用
 cmd ["make", "prod_server"]

我们使用编写好的dockerfile文件构建镜像

 $ docker build -t="mock-server:1.0.0" .

让我们查看一下镜像

 $ docker images
 repository   tag     image id   created    size
 mock-server   1.0.0    957ad2aa1f97  8 minutes ago  674mb
 mongo    latest    05b3651ee24e  2 weeks ago   382mb

现在就到了关键的一步,我们将mocker-server镜像运行起来,并建立服务器与数据库的连接

复制代码 代码如下:

$ docker run -d -i -t -p 7001:7001 --name mock-server1 --link mock-mongo:db mock-server:1.0.0 /bin/bash

让我们再看看现在正在运行的容器

 $ docker ps
 container id  image    command     created    status    ports      names
 ee780b903c64  mock-server:1.0.0 "/bin/bash"    about a minute ago up 11 seconds  0.0.0.0:7001->7001/tcp  mock-server
 0d440be90935  mongo    "docker-entrypoint.s…" 16 hours ago   up 16 hours   0.0.0.0:27017->27017/tcp mock-mongo

检测node容器和mongo容器的连接状态

 $ docker exec -it mock-server /bin/bash
 $ curl db

现在我们的服务端和数据库已经建立起了连接,接下来我们要开始部署我们的客户端

构建nginx容器并与node容器建立连接

在建立nginx前,我们要先约定好,node容器别名,nginx转发的端口号以及客户端访问nginx域名及端口号

  • node服务器别名:node

  • node容器映射的端口号:7001

  • nginx域名:127.0.0.1

  • nginx端口号:90

我们先拉取nginx镜像并建立容器

$ docker pull nginx:latest
$ docker run -p 90:80 --link mock-node:node nginx:latest --name mock-nginx
# 查看容器连接状态
$ docker exec -it mock-nginx /bin/bash
$ env
# 看到以下数据则表示连接成功了
node_port_7001_tcp=tcp://172.17.0.3:7001
node_port_7001_tcp_port=7001
node_env_yarn_version=1.9.4

现在我们在看看已经运行中的容器

$ docker ps
 container id  image    command     created    status    ports      names
 09644025d148  nginx    "nginx -g 'daemon of…" 5 hours ago   up 5 hours   0.0.0.0:90->80/tcp   mock-nginx
 ee780b903c64  mock-server:1.0.0 "/bin/bash"    about a minute ago up 11 seconds  0.0.0.0:7001->7001/tcp  mock-server
 0d440be90935  mongo    "docker-entrypoint.s…" 24 hours ago  up 24 hours   0.0.0.0:27017->27017/tcp mock-mongo

由于前端独立部署的原因,我们需要修改nginx的配置,修改nginx的配置的方式有以下几种

  • 在建立容器是使用-v指令将配置文件挂载到本地主机,在本地修改后在容器重启nginx

  • 将配置文件复制到本地主机,修改后替换容器的对应文件,然后再容器内重启nginx

  • ...

我们当前操作环境是17版 15寸Macbook pro,挂载需要特殊配置,因此我采用了第二种方式

配置文件修改

  • 容器内配置文件路径 /etc/nginx/conf.d/default.conf

  • 拷贝配置文件至本地

 $ docker cp mock-nginx:/etc/nginx/conf.d/default.conf ~/nginx/default.conf

在nginx配置文件增加以下配置

server {
 location /mock-api/ {
  # node 为指令服务端容器别名
  proxy_pass Http://node:7001/;
 }

 location /mock {
  autoindex on;
  alias /root/dist;
 }
}

覆盖容器内配置并重启nginx

$ docker cp ~/nginx/default.conf mock-nginx:/etc/nginx/conf.d/default.conf
# 进入容器
$ docker exec -it mock-nginx /bin/bash
# 重启nginx,看到以下提示则表示重启成功
$ nginx -s reload
2018/11/03 17:23:14 [notice] 68#68: signal process started

接下来就到了我们的最后激动人心的最后一步

修改我们前端项目请求的网络域名并打包上传

// api-mocker/client/config 
// module.exports > build > serverroot

module.exports = {
 build: {
  serverroot: '127.0.0.1:90/mock-api'
 }
}

将打包后的dist文件上传至nginx配置的/root/dist目录下

 $ docker cp ~/sites/api-mocker/client/dist mock-nginx:/root

> 当然nginx的容器构建也可以编写一个dockfile文件来实现,这里我们就不详细说明了,挂载配置文件和日志至本地主机有兴趣的可以自己尝试一下复制代码

测试

所有惊心动魄的配置我们都已经完成,现在我们来测试一下

访问前端项目: http://127.0.0.1:90/mock 我们会看到,以下界面说明我们前端项目部署成功

Docker如何部署多容器通信

我们尝试注册一个账号,看到成功提示,那就说明我们整个项目部署成功了

Docker如何部署多容器通信

Docker如何部署多容器通信

关于“Docker如何部署多容器通信”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Docker如何部署多容器通信”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网html频道。

--结束END--

本文标题: Docker如何部署多容器通信

本文链接: http://www.lsjlt.com/news/96337.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Docker如何部署多容器通信
    这篇文章主要介绍了Docker如何部署多容器通信的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Docker如何部署多容器通信文章都会有所收获,下面我们一起来看看吧。原因是这样的...
    99+
    2024-04-02
  • Docker如何简化多容器应用部署
    Docker可以简化多容器应用部署的过程,主要有以下几点优势: 易于管理:Docker可以将应用及其依赖项打包成一个镜像,使得部...
    99+
    2024-04-02
  • Docker容器如何部署consul
    小编给大家分享一下Docker容器如何部署consul,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Consul简介Consul 是一个支持多数据中心分布式高可用...
    99+
    2023-06-29
  • Docker容器部署Matomo
    ⭐️主要步骤:数据卷挂载 -->  创建MySQL容器 -->  创建一个带有环境变量设置的Matomo容器 docker volume create matomo_data docker run -d --name mysql ...
    99+
    2023-10-03
    docker mysql 容器
  • 如何使用Docker Compose快速部署多容器服务
    小编给大家分享一下如何使用Docker Compose快速部署多容器服务,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1 什么是Docker Compose前面我们使用 Docker 的时候,定义 Dockerf...
    99+
    2023-06-29
  • 如何在docker容器中部署应用
    本篇内容介绍了“如何在docker容器中部署应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一个简单的Hello World应用。1 Ma...
    99+
    2023-06-02
  • Docker如何部署Mysql,.Net6,Sqlserver等容器
    这篇文章主要介绍了Docker如何部署Mysql,.Net6,Sqlserver等容器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Centos8安装Docker1.更新一下...
    99+
    2023-06-22
  • .Net Core部署Docker容器
    阅读本文需要一定的docker基础知识。 前置工作 首先新建一个core项目,需要注意的是在这个界面最好勾选一下docker支持: 项目创建完成以后,你会在目录中发现Dockerf...
    99+
    2024-04-02
  • Django-Docker容器化部署:
    上一章我们成功搭建了容器化的 Django 项目,用到的数据库为默认的 Sqlite。Sqlite 虽然简单易用,但是线上部署时通常会选择更高效、更可靠的数据库,比如 MySQL。 本章将在上一章的基础上,修改并构建 Docker + D...
    99+
    2023-01-31
    容器 Django Docker
  • 如何在docker容器中部署Web项目
    小编给大家分享一下如何在docker容器中部署Web项目,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!系统选用Centos或者Ubuntu都可以。 大致...
    99+
    2023-06-04
  • docker容器化怎么部署
    要将应用程序容器化并部署到Docker中,可以按照以下步骤进行操作: 编写Dockerfile:创建一个Dockerfile文件...
    99+
    2023-10-27
    docker
  • 在Docker容器中部署MSSQL
    部署MSSQL需要2G内存 1.下载镜像 docker pull microsoft/mssql-server-linux 使用该命令就可以把数据库的docker镜像下载下来。 2....
    99+
    2024-04-02
  • Docker容器Consul部署概述
    目录一、Consul概述二、Consul的特性三、Consul的使用场景四、搭建consul集群(1)server部署(2)client部署(3)配置template模板自动更新(4...
    99+
    2022-11-13
    Docker容器Consul部署 Docker Consu
  • docker nginx如何部署多个项目
    今天小编给大家分享一下docker nginx如何部署多个项目的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2024-04-02
  • Docker 部署 MongoDB容器的方法
    目录Docker是什么 部署1. 拉取镜像2. 查看镜像3. 运行容器4. 创建用户5. 连接 DB6. UIDocker是什么 “ Docker 是一个开源的应用容器引擎,让开发...
    99+
    2024-04-02
  • Docker部署Mysql,.Net6,Sqlserver等容器
    目录Centos8安装Docker1.更新一下yum2.安装containerd.io3.安装Docker4.启动Docker5.设置容器开机自启Mysql8.0部署1.拉取镜像2....
    99+
    2024-04-02
  • docker容器部署到云服务器
    部署到云服务器的方式有很多,其中最简单的方式是使用Docker镜像。这种方式通常是直接将Docker镜像部署到云服务器上的容器中,因此只需要将云服务器与Docker镜像文件连接即可进行部署。下面是一些常见的Docker容器部署方式: 镜...
    99+
    2023-10-26
    容器 服务器 docker
  • docker如何部署confluence
    这篇文章给大家分享的是有关docker如何部署confluence的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Confluence 是收费的,但是可以破解使用(提倡购买,支持正版)本文使用的镜像是基于他人(镜像...
    99+
    2023-06-15
  • Docker如何部署Scrapy
    这篇文章将为大家详细讲解有关Docker如何部署Scrapy,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。假设我们要在10台Ubuntu 部署爬虫如何搞之?用传统的方法会吐血的,除非你记录下来每个步骤,然...
    99+
    2023-06-07
  • Docker如何部署Mysql8
    本篇内容主要讲解“Docker如何部署Mysql8”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Docker如何部署Mysql8”吧!一、前置需求linux系统本人用的Centos7安装dock...
    99+
    2023-07-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作