Docker实现双容器部署的方法步骤

 更新时间:2024年12月23日 10:39:46   作者:定位问题才是真正的技术活算法就是真言  
本文介绍了Docker和DockerCompose实现双容器部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

要实现 Docker 的双容器部署,通常是指在同一个 Docker 网络中同时运行两个或多个容器,以便它们能够相互通信。下面是一个具体的步骤示例,说明如何使用 Docker 和 Docker Compose 来实现双容器部署。我们将以简单的 Web 应用程序和数据库的组合为例。

1. 环境准备

确保你的计算机上已经安装了 Docker 和 Docker Compose。可以使用以下命令检查安装状态:

docker --version
docker-compose --version

2. 创建项目目录

在你的计算机上创建一个新的目录来存放 Docker 和应用程序文件。可以命名为 myapp

mkdir myapp
cd myapp

3. 编写 Dockerfile(Web 应用)

在 myapp 目录中创建一个名为 Dockerfile 的文件,用于定义 Web 应用的容器化过程。假设我们将使用一个简单的 Node.js 应用:

Dockerfile

# 使用 Node.js 官方镜像
FROM node:14

# 设置工作目录
WORKDIR /usr/src/app

# 复制 package.json 和 package-lock.json
COPY package*.json ./

# 安装依赖
RUN npm install

# 复制项目文件
COPY . .

# 暴露应用运行的端口
EXPOSE 3000

# 启动应用
CMD ["npm", "start"]

4. 编写应用代码

在 myapp 目录中创建一个简单的 Node.js 应用。首先创建 package.json 文件:

package.json

{
  "name": "myapp",
  "version": "1.0.0",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "^4.17.1",
    "mysql": "^2.18.1"
  }
}

然后创建一个简单的 Express 应用来连接数据库:

app.js

const express = require('express');
const mysql = require('mysql');

const app = express();
const port = 3000;

// 创建数据库连接
const db = mysql.createConnection({
  host: 'db',  // 使用服务名,Docker Compose中的服务名称
  user: 'root',
  password: 'example',
  database: 'testdb'
});

// 连接数据库
db.connect(err => {
  if (err) {
    console.error('Database connection failed:', err);
    return;
  }
  console.log('Connected to the database');
});

// 简单的路由
app.get('/', (req, res) => {
  res.send('Hello World!');
});

// 启动服务器
app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

5. 创建 Docker Compose 文件

在 myapp 目录中创建名为 docker-compose.yml 的文件,这个文件将定义我们的服务。

docker-compose.yml

version: '3.8'

services:
  web:
    build: .
    ports:
      - "3000:3000"  # 将容器的 3000 端口映射到主机的 3000 端口
    depends_on:
      - db  # 确保 db 服务在 web 服务之前启动

  db:
    image: mysql:5.7  # 使用 MySQL 镜像
    environment:
      MYSQL_ROOT_PASSWORD: example  # 设置 MySQL root 密码
      MYSQL_DATABASE: testdb  # 创建一个数据库
    volumes:
      - db_data:/var/lib/mysql  # 保持数据库文件持久化

volumes:
  db_data: {}  # 定义数据卷

6. 启动服务

在 myapp 目录中打开终端,运行以下命令来构建和启动服务:

docker-compose up

如果希望在后台运行,可以使用:

docker-compose up -d

7. 访问应用

在浏览器中访问 http://localhost:3000,你应该看到 Hello World! 消息,表示你的 Web 应用已经成功启动并可以连接到 MySQL 数据库。

8. 停止服务

要停止运行的服务,可以使用以下命令:

docker-compose down

9. 其他命令

  • 查看容器日志

    docker-compose logs
    
  • 进入容器的终端

    docker-compose exec web /bin/bash
    
  • 重新构建服务(如果修改了 Dockerfile):

    docker-compose up --build
    

小结

通过以上步骤,你成功实现了一个双容器的部署,包括一个 Web 应用和一个 MySQL 数据库。使用 Docker Compose 管理多个容器,使得整个过程变得简单、高效。

到此这篇关于Docker实现双容器部署的方法步骤的文章就介绍到这了,更多相关Docker 双容器部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker运行Web服务实战之Tomcat的详细过程

    Docker运行Web服务实战之Tomcat的详细过程

    Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和Java Server Page(JSP)的支持,这篇文章主要介绍了Docker运行Web服务实战之Tomcat的详细过程,需要的朋友可以参考下
    2022-08-08
  • docker 基于golang镜像构建 ssh服务的方法

    docker 基于golang镜像构建 ssh服务的方法

    这篇文章主要介绍了docker 基于golang镜像构建 ssh服务的方法,添加goland环境变量的方法及centos下sshd和goland环境的docker文件配置方法,需要的朋友可以参考下
    2021-07-07
  • 使用docker compose部署emqx集群的示例

    使用docker compose部署emqx集群的示例

    这篇文章主要介绍了使用docker compose部署emqx集群,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Docker compose启动服务遇到的问题小结

    Docker compose启动服务遇到的问题小结

    这篇文章主要介绍了Docker compose启动服务遇到的问题小结,这个是检验我们的docker compose掌握程度,因此里面的镜像没有提前拉取,挂载数据卷的目录也没有提前创建,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Docker中部署MySQL 5.7并远程连接Navicat的完整指南

    Docker中部署MySQL 5.7并远程连接Navicat的完整指南

    MySQL是最流行的关系型数据库之一,而Docker提供了轻量级、可移植的容器化解决方案,本文将详细介绍如何在CentOS 7上使用Docker部署 MySQL 5.7,并通过Windows上的Navicat进行远程连接,需要的朋友可以参考下
    2025-07-07
  • Windows Docker Desktop磁盘空间清理步骤完全指南

    Windows Docker Desktop磁盘空间清理步骤完全指南

    Windows Docker Desktop在长时间使用后,会由于镜像、容器、缓存等文件累积,导致磁盘空间占用过大,这篇文章主要介绍了Windows Docker Desktop磁盘空间清理的相关资料,需要的朋友可以参考下
    2026-04-04
  • Docker向数据卷Volume写入数据

    Docker向数据卷Volume写入数据

    这篇文章介绍了Docker向数据卷Volume写入数据的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • Docker容器连接实现步骤解析

    Docker容器连接实现步骤解析

    这篇文章主要介绍了Docker容器连接实现步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • Docker镜像拉取超时或失败的解决方法介绍

    Docker镜像拉取超时或失败的解决方法介绍

    在使用Docker进行容器化应用开发时,拉取镜像是一个常见的操作,本文将探讨Docker镜像拉取失败的原因及其解决方案,有需要的小伙伴可以参考一下
    2025-05-05
  • docker实现MySQL的主从复制

    docker实现MySQL的主从复制

    在学习项目的时候实现读写分离用到了主从复制,但是一般要实现的话需要虚拟机或服务器非常麻烦,但是docker可以完美解决这一问题,本文主要介绍了docker实现MySQL的主从复制,感兴趣的可以了解一下
    2024-01-01

最新评论