docker常用容器啟動(dòng)docker-compose.yml配置文件使用
在平常的開發(fā)工作中,我們經(jīng)常需要部署項(xiàng)目。項(xiàng)目開發(fā)完成后,部署測試環(huán)境、部署生產(chǎn)環(huán)境等。以前部署項(xiàng)目,在服務(wù)器上安裝項(xiàng)目所需的軟件,如 nginx、redis 等??赡茉跍y試環(huán)境測試沒有問題,由于環(huán)境配置等不同,部署到生產(chǎn)環(huán)境又會(huì)產(chǎn)生莫名奇怪的問題。隨著 docker 容器的出現(xiàn),我們可以用 Dockerfile 構(gòu)建鏡像,構(gòu)建完成后運(yùn)行,這樣可以保證每個(gè)地方使用的鏡像一致,然后啟動(dòng)使用 docker-compose.yml 文件,保證容器的配置一致。今天總結(jié)下常用軟件啟動(dòng)的 docker-compose.yml 文件。
概述
定義和運(yùn)行多容器 Docker 應(yīng)用的工具,可以在里面定義多個(gè)服務(wù)信息,定義每個(gè)服務(wù)的服務(wù)名、端口映射、環(huán)境變量、網(wǎng)絡(luò)模式等。這樣可以方便的管理啟動(dòng)命令,方便拓展??梢砸淮螁?dòng)多個(gè)容器。常用于部署測試環(huán)境等。這樣可以保證每個(gè)環(huán)境映射的端口、依賴的鏡像等信息一致,減少因環(huán)境問題導(dǎo)致的差異。通過 docker-compose.yml 文件,可以確保開發(fā)、測試和生產(chǎn)環(huán)境的一致性,避免“因部署不同機(jī)器存在差異”的問題。
docker-compose.yml 示例
1:后端服務(wù)
services:
ruoyi-admin:
image: ruoyi-admin:v1.0
container_name : ruoyi-admin
ports:
- "9016:9016"
environment:
- SERVER_PORT=9016
- TZ=Asia/Shanghai
restart: always
networks:
- my_network
networks:
my_network:
external: true2:mysql
services:
mysql:
image: mysql:8.0.33
restart: always
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: your_password
TZ: Asia/Shanghai
ports:
- "3306:3306"
volumes:
- /docker/mysql/log:/var/log/mysql
- /docker/mysql/data:/var/lib/mysql
- /docker/mysql/conf:/etc/mysql/conf.d
command:
--max_connections=1000
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
privileged: true
network_mode: "host"3:nginx
services:
nginx:
image: nginx:latest
container_name: nginx-web
environment:
TZ: Asia/Shanghai
ports:
- "80:80"
- "443:443"
volumes:
# 配置文件映射
- /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /docker/nginx/conf:/etc/nginx/conf
# 頁面目錄
- /docker/nginx/html:/usr/share/nginx/html
privileged: true
network_mode: "host"4:redis
services:
redis:
image: redis:6.2.6
container_name: redis6.2.6
## 設(shè)置持久化,允許遠(yuǎn)程訪問,密碼等
command: redis-server --appendonly yes --bind 0.0.0.0 --requirepass your_password
ports:
- 6379:6379
volumes:
# - ./data/:/data
- /docker/redis/conf/redis.conf:/etc/redis/redis.conf
- /docker/redis/data:/data
environment:
- TZ=Asia/Shanghai
restart: always
# 獲取宿主機(jī) root 權(quán)限
privileged: true
# # 設(shè)置容器網(wǎng)絡(luò)為本機(jī)網(wǎng)絡(luò)
network_mode: "host"5:nacos
nacos:
image: nacos/nacos-server:v2.0.3
container_name: nacos
restart: always
ports:
# web 界面訪問端口
- 8848:8848
environment:
- MODE=standalone
# 連接 mysql 數(shù)據(jù)庫,主要是為了配置的持久化
- SPRING_DATASOURCE_PLATFORM=mysql # 定義使用的數(shù)據(jù)庫是 mysql
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_DB_NAME=nacos_dev
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=root
volumes:
- /docker/nacos/logs:/home/nacos/logs6:rabbitmq
rabbitmq:
# 帶有管理界面的 rabbitmq 鏡像
image: rabbitmq:management
container_name: rabbitmq
ports:
# AMQP 協(xié)議端口
- "5672:5672"
# rabbitmq 管理界面端口
- "15672:15672"
volumes:
# 數(shù)據(jù)持久化目錄
- /usr/local/docker/rabbitmq/data:/var/lib/rabbitmq
# 日志目錄
- /usr/local/docker/rabbitmq/logs:/var/log/rabbitmq
environment:
# 設(shè)置用戶名
RABBITMQ_DEFAULT_USER: guest
# 設(shè)置密碼
RABBITMQ_DEFAULT_PASS: 123456
restart: alwaysdocker compose 常用命令
- (1):docker compose up -d:啟動(dòng)新的容器,會(huì)先拉取鏡像等然后創(chuàng)建新的容器。帶上 -d 是非阻塞的,不阻塞當(dāng)前的命令窗口,不帶 -d 是阻塞的,會(huì)阻塞當(dāng)前的命令窗口。
- (2):docker compose down:停止所有運(yùn)行中的容器
- (3):docker compose start:啟動(dòng)一個(gè)停止的容器
- (4):docker compose restart:重啟容器
- (5):docker compose build:構(gòu)建鏡像
- (6):docker compose config:查看配置
- (7):docker compose logs:查看容器日志
- (8):docker compose exec service-name command:進(jìn)入運(yùn)行中的容器
總結(jié)
docker-compose.yml 可以更好的管理啟動(dòng)命令,這樣可以保持測試環(huán)境、生產(chǎn)環(huán)境等端口,配置等一致性,防止項(xiàng)目部署因配置不同導(dǎo)致的問題。
包括鏡像來源、容器名稱、端口映射、環(huán)境變量、數(shù)據(jù)卷掛載等。使用 docker run 啟動(dòng),要輸入很長的命令,而且容易出錯(cuò)。
使用 docker-compose.yml 管理命令,啟動(dòng)方便快捷,也降低了配置出錯(cuò)的概率。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 關(guān)于immich?docker-compose.yml配置文件詳解
- 在docker-compose.yml文件中配置容器的環(huán)境變量方式
- docker-compose.yml參數(shù)的用法(配置文件)
- 使用docker?compose快速配置一組容器服務(wù)詳解
- Springboot使用docker-compose實(shí)現(xiàn)動(dòng)態(tài)配置過程
- docker-compose配置并部署redis服務(wù)的實(shí)現(xiàn)
- 詳解Docker Compose配置文件參數(shù)
- Docker compose配置文件寫法及命令使用示例
- docker-compose安裝yml文件配置方式
- docker compose 一鍵部署分布式配置中心Apollo的過程詳解
- docker-compose部署配置jenkins的詳細(xì)教程
- Docker Compose 配置指南小結(jié)
相關(guān)文章
Docker鏡像與容器的導(dǎo)入導(dǎo)出操作實(shí)踐
這篇文章介紹了Docker鏡像與容器的導(dǎo)入導(dǎo)出操作,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
centos下docker安裝及springboot遠(yuǎn)程發(fā)布docker的方法
這篇文章主要介紹了centos下docker安裝及springboot遠(yuǎn)程發(fā)布docker的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
docker部署Vaultwarden密碼共享管理系統(tǒng)的實(shí)現(xiàn)(圖文)
Vaultwarden是一個(gè)開源的密碼管理器,它提供了類似于Bitwarden的功能,允許用戶安全地存儲(chǔ)和管理密碼、敏感數(shù)據(jù)和身份信息,本文主要介紹了docker部署Vaultwarden密碼共享管理系統(tǒng)的實(shí)現(xiàn),感興趣的可以了解一下2023-10-10
.netcore 使用surging框架發(fā)布到docker
這篇文章主要介紹了netcore 使用surging框架發(fā)布到docker,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-03-03
Docker構(gòu)建簡單的個(gè)人主頁網(wǎng)站實(shí)戰(zhàn)教程
Docker是一種開源容器化技術(shù),可以打包、發(fā)布和運(yùn)行應(yīng)用程序,本教程介紹了如何使用Docker構(gòu)建一個(gè)簡單的個(gè)人主頁網(wǎng)站,通過編寫Dockerfile來自定義鏡像,并展示了如何通過傳入環(huán)境變量來動(dòng)態(tài)更改網(wǎng)頁內(nèi)容,項(xiàng)目使用的技術(shù)包括Docker、Alpine、Nginx、HTML、CSS和JavaScript2024-10-10

