Docker實(shí)現(xiàn)雙容器部署的方法步驟
要實(shí)現(xiàn) Docker 的雙容器部署,通常是指在同一個 Docker 網(wǎng)絡(luò)中同時運(yùn)行兩個或多個容器,以便它們能夠相互通信。下面是一個具體的步驟示例,說明如何使用 Docker 和 Docker Compose 來實(shí)現(xiàn)雙容器部署。我們將以簡單的 Web 應(yīng)用程序和數(shù)據(jù)庫的組合為例。
1. 環(huán)境準(zhǔn)備
確保你的計算機(jī)上已經(jīng)安裝了 Docker 和 Docker Compose??梢允褂靡韵旅顧z查安裝狀態(tài):
docker --version docker-compose --version
2. 創(chuàng)建項(xiàng)目目錄
在你的計算機(jī)上創(chuàng)建一個新的目錄來存放 Docker 和應(yīng)用程序文件??梢悦麨?nbsp;myapp。
mkdir myapp cd myapp
3. 編寫 Dockerfile(Web 應(yīng)用)
在 myapp 目錄中創(chuàng)建一個名為 Dockerfile 的文件,用于定義 Web 應(yīng)用的容器化過程。假設(shè)我們將使用一個簡單的 Node.js 應(yīng)用:
Dockerfile
# 使用 Node.js 官方鏡像 FROM node:14 # 設(shè)置工作目錄 WORKDIR /usr/src/app # 復(fù)制 package.json 和 package-lock.json COPY package*.json ./ # 安裝依賴 RUN npm install # 復(fù)制項(xiàng)目文件 COPY . . # 暴露應(yīng)用運(yùn)行的端口 EXPOSE 3000 # 啟動應(yīng)用 CMD ["npm", "start"]
4. 編寫應(yīng)用代碼
在 myapp 目錄中創(chuàng)建一個簡單的 Node.js 應(yīng)用。首先創(chuàng)建 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"
}
}
然后創(chuàng)建一個簡單的 Express 應(yīng)用來連接數(shù)據(jù)庫:
app.js
const express = require('express');
const mysql = require('mysql');
const app = express();
const port = 3000;
// 創(chuàng)建數(shù)據(jù)庫連接
const db = mysql.createConnection({
host: 'db', // 使用服務(wù)名,Docker Compose中的服務(wù)名稱
user: 'root',
password: 'example',
database: 'testdb'
});
// 連接數(shù)據(jù)庫
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!');
});
// 啟動服務(wù)器
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
5. 創(chuàng)建 Docker Compose 文件
在 myapp 目錄中創(chuàng)建名為 docker-compose.yml 的文件,這個文件將定義我們的服務(wù)。
docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000" # 將容器的 3000 端口映射到主機(jī)的 3000 端口
depends_on:
- db # 確保 db 服務(wù)在 web 服務(wù)之前啟動
db:
image: mysql:5.7 # 使用 MySQL 鏡像
environment:
MYSQL_ROOT_PASSWORD: example # 設(shè)置 MySQL root 密碼
MYSQL_DATABASE: testdb # 創(chuàng)建一個數(shù)據(jù)庫
volumes:
- db_data:/var/lib/mysql # 保持?jǐn)?shù)據(jù)庫文件持久化
volumes:
db_data: {} # 定義數(shù)據(jù)卷
6. 啟動服務(wù)
在 myapp 目錄中打開終端,運(yùn)行以下命令來構(gòu)建和啟動服務(wù):
docker-compose up
如果希望在后臺運(yùn)行,可以使用:
docker-compose up -d
7. 訪問應(yīng)用
在瀏覽器中訪問 http://localhost:3000,你應(yīng)該看到 Hello World! 消息,表示你的 Web 應(yīng)用已經(jīng)成功啟動并可以連接到 MySQL 數(shù)據(jù)庫。
8. 停止服務(wù)
要停止運(yùn)行的服務(wù),可以使用以下命令:
docker-compose down
9. 其他命令
查看容器日志:
docker-compose logs
進(jìn)入容器的終端:
docker-compose exec web /bin/bash
重新構(gòu)建服務(wù)(如果修改了 Dockerfile):
docker-compose up --build
小結(jié)
通過以上步驟,你成功實(shí)現(xiàn)了一個雙容器的部署,包括一個 Web 應(yīng)用和一個 MySQL 數(shù)據(jù)庫。使用 Docker Compose 管理多個容器,使得整個過程變得簡單、高效。
到此這篇關(guān)于Docker實(shí)現(xiàn)雙容器部署的方法步驟的文章就介紹到這了,更多相關(guān)Docker 雙容器部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker運(yùn)行Web服務(wù)實(shí)戰(zhàn)之Tomcat的詳細(xì)過程
Tomcat是由Apache軟件基金會下屬的Jakarta項(xiàng)目開發(fā)的一個Servlet容器,按照Sun Microsystems提供的技術(shù)規(guī)范,實(shí)現(xiàn)了對Servlet和Java Server Page(JSP)的支持,這篇文章主要介紹了Docker運(yùn)行Web服務(wù)實(shí)戰(zhàn)之Tomcat的詳細(xì)過程,需要的朋友可以參考下2022-08-08
docker 基于golang鏡像構(gòu)建 ssh服務(wù)的方法
這篇文章主要介紹了docker 基于golang鏡像構(gòu)建 ssh服務(wù)的方法,添加goland環(huán)境變量的方法及centos下sshd和goland環(huán)境的docker文件配置方法,需要的朋友可以參考下2021-07-07
Docker?compose啟動服務(wù)遇到的問題小結(jié)
這篇文章主要介紹了Docker?compose啟動服務(wù)遇到的問題小結(jié),這個是檢驗(yàn)我們的docker?compose掌握程度,因此里面的鏡像沒有提前拉取,掛載數(shù)據(jù)卷的目錄也沒有提前創(chuàng)建,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
Docker中部署MySQL 5.7并遠(yuǎn)程連接Navicat的完整指南
MySQL是最流行的關(guān)系型數(shù)據(jù)庫之一,而Docker提供了輕量級、可移植的容器化解決方案,本文將詳細(xì)介紹如何在CentOS 7上使用Docker部署 MySQL 5.7,并通過Windows上的Navicat進(jìn)行遠(yuǎn)程連接,需要的朋友可以參考下2025-07-07
Windows?Docker?Desktop磁盤空間清理步驟完全指南
Windows?Docker?Desktop在長時間使用后,會由于鏡像、容器、緩存等文件累積,導(dǎo)致磁盤空間占用過大,這篇文章主要介紹了Windows?Docker?Desktop磁盤空間清理的相關(guān)資料,需要的朋友可以參考下2026-04-04
Docker向數(shù)據(jù)卷Volume寫入數(shù)據(jù)
這篇文章介紹了Docker向數(shù)據(jù)卷Volume寫入數(shù)據(jù)的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
docker實(shí)現(xiàn)MySQL的主從復(fù)制
在學(xué)習(xí)項(xiàng)目的時候?qū)崿F(xiàn)讀寫分離用到了主從復(fù)制,但是一般要實(shí)現(xiàn)的話需要虛擬機(jī)或服務(wù)器非常麻煩,但是docker可以完美解決這一問題,本文主要介紹了docker實(shí)現(xiàn)MySQL的主從復(fù)制,感興趣的可以了解一下2024-01-01

