Docker實(shí)現(xiàn)雙容器部署的方法步驟
要實(shí)現(xiàn) Docker 的雙容器部署,通常是指在同一個(gè) Docker 網(wǎng)絡(luò)中同時(shí)運(yùn)行兩個(gè)或多個(gè)容器,以便它們能夠相互通信。下面是一個(gè)具體的步驟示例,說明如何使用 Docker 和 Docker Compose 來實(shí)現(xiàn)雙容器部署。我們將以簡(jiǎn)單的 Web 應(yīng)用程序和數(shù)據(jù)庫的組合為例。
1. 環(huán)境準(zhǔn)備
確保你的計(jì)算機(jī)上已經(jīng)安裝了 Docker 和 Docker Compose??梢允褂靡韵旅顧z查安裝狀態(tài):
docker --version docker-compose --version
2. 創(chuàng)建項(xiàng)目目錄
在你的計(jì)算機(jī)上創(chuàng)建一個(gè)新的目錄來存放 Docker 和應(yīng)用程序文件。可以命名為 myapp
。
mkdir myapp cd myapp
3. 編寫 Dockerfile(Web 應(yīng)用)
在 myapp
目錄中創(chuàng)建一個(gè)名為 Dockerfile
的文件,用于定義 Web 應(yīng)用的容器化過程。假設(shè)我們將使用一個(gè)簡(jiǎn)單的 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 # 啟動(dòng)應(yīng)用 CMD ["npm", "start"]
4. 編寫應(yīng)用代碼
在 myapp
目錄中創(chuàng)建一個(gè)簡(jiǎn)單的 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)建一個(gè)簡(jiǎn)單的 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'); }); // 簡(jiǎn)單的路由 app.get('/', (req, res) => { res.send('Hello World!'); }); // 啟動(dòng)服務(wù)器 app.listen(port, () => { console.log(`Server running at http://localhost:${port}`); });
5. 創(chuàng)建 Docker Compose 文件
在 myapp
目錄中創(chuàng)建名為 docker-compose.yml
的文件,這個(gè)文件將定義我們的服務(wù)。
docker-compose.yml
version: '3.8' services: web: build: . ports: - "3000:3000" # 將容器的 3000 端口映射到主機(jī)的 3000 端口 depends_on: - db # 確保 db 服務(wù)在 web 服務(wù)之前啟動(dòng) db: image: mysql:5.7 # 使用 MySQL 鏡像 environment: MYSQL_ROOT_PASSWORD: example # 設(shè)置 MySQL root 密碼 MYSQL_DATABASE: testdb # 創(chuàng)建一個(gè)數(shù)據(jù)庫 volumes: - db_data:/var/lib/mysql # 保持?jǐn)?shù)據(jù)庫文件持久化 volumes: db_data: {} # 定義數(shù)據(jù)卷
6. 啟動(dòng)服務(wù)
在 myapp
目錄中打開終端,運(yùn)行以下命令來構(gòu)建和啟動(dòng)服務(wù):
docker-compose up
如果希望在后臺(tái)運(yùn)行,可以使用:
docker-compose up -d
7. 訪問應(yīng)用
在瀏覽器中訪問 http://localhost:3000
,你應(yīng)該看到 Hello World!
消息,表示你的 Web 應(yīng)用已經(jīng)成功啟動(dò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)了一個(gè)雙容器的部署,包括一個(gè) Web 應(yīng)用和一個(gè) MySQL 數(shù)據(jù)庫。使用 Docker Compose 管理多個(gè)容器,使得整個(gè)過程變得簡(jiǎn)單、高效。
到此這篇關(guān)于Docker實(shí)現(xiàn)雙容器部署的方法步驟的文章就介紹到這了,更多相關(guān)Docker 雙容器部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker不同宿主機(jī)網(wǎng)絡(luò)打通的操作方案
這篇文章主要介紹了Docker不同宿主機(jī)網(wǎng)絡(luò)打通的方案?,本方式使用docker?Swarm集群的方式創(chuàng)建overlay?網(wǎng)絡(luò)進(jìn)行打通,需要的朋友可以參考下2024-08-08docker之如何設(shè)置日志文件大小及個(gè)數(shù)
這篇文章主要介紹了docker之如何設(shè)置日志文件大小及個(gè)數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05使用Docker+Nginx部署vue項(xiàng)目詳細(xì)圖文教程
這篇文章主要給大家介紹了關(guān)于使用Docker+Nginx部署vue項(xiàng)目的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09Docker compose up -d與Docker restart的區(qū)別
本文主要介紹了Docker compose up -d與Docker restart的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07關(guān)于Docker容器Dead狀態(tài)的分析
這篇文章主要介紹了關(guān)于Docker容器Dead狀態(tài)的分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Ubuntu?環(huán)境下安裝?Docker環(huán)境詳解
這篇文章主要介紹了Ubuntu?環(huán)境下安裝?Docker環(huán)境詳解的相關(guān)資料,需要的朋友可以參考下2022-10-10Docker守護(hù)進(jìn)程安全配置項(xiàng)目詳解
這篇文章主要介紹了Docker守護(hù)進(jìn)程安全配置介紹,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03