docker常用容器啟動(dòng)docker-compose.yml配置文件使用
在平常的開(kāi)發(fā)工作中,我們經(jīng)常需要部署項(xiàng)目。項(xiàng)目開(kāi)發(fā)完成后,部署測(cè)試環(huán)境、部署生產(chǎn)環(huán)境等。以前部署項(xiàng)目,在服務(wù)器上安裝項(xiàng)目所需的軟件,如 nginx、redis 等??赡茉跍y(cè)試環(huán)境測(cè)試沒(méi)有問(wèn)題,由于環(huán)境配置等不同,部署到生產(chǎn)環(huán)境又會(huì)產(chǎn)生莫名奇怪的問(wè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è)容器。常用于部署測(cè)試環(huán)境等。這樣可以保證每個(gè)環(huán)境映射的端口、依賴的鏡像等信息一致,減少因環(huán)境問(wèn)題導(dǎo)致的差異。通過(guò) docker-compose.yml 文件,可以確保開(kāi)發(fā)、測(cè)試和生產(chǎn)環(huán)境的一致性,避免“因部署不同機(jī)器存在差異”的問(wèn)題。
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: true
2: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 # 頁(yè)面目錄 - /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)程訪問(wè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 界面訪問(wèn)端口 - 8848:8848 environment: - MODE=standalone # 連接 mysql 數(shù)據(jù)庫(kù),主要是為了配置的持久化 - SPRING_DATASOURCE_PLATFORM=mysql # 定義使用的數(shù)據(jù)庫(kù)是 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/logs
6: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: always
docker compose 常用命令
- (1):docker compose up -d:?jiǎn)?dòng)新的容器,會(huì)先拉取鏡像等然后創(chuàng)建新的容器。帶上 -d 是非阻塞的,不阻塞當(dāng)前的命令窗口,不帶 -d 是阻塞的,會(huì)阻塞當(dāng)前的命令窗口。
- (2):docker compose down:停止所有運(yùn)行中的容器
- (3):docker compose start:?jiǎn)?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)命令,這樣可以保持測(cè)試環(huán)境、生產(chǎn)環(huán)境等端口,配置等一致性,防止項(xiàng)目部署因配置不同導(dǎo)致的問(wèn)題。
包括鏡像來(lái)源、容器名稱、端口映射、環(huán)境變量、數(shù)據(jù)卷掛載等。使用 docker run 啟動(dòng),要輸入很長(zhǎ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)配置過(guò)程
- docker-compose配置并部署redis服務(wù)的實(shí)現(xiàn)
- 詳解Docker Compose配置文件參數(shù)
- Docker compose配置文件寫(xiě)法及命令使用示例
- docker-compose安裝yml文件配置方式
- docker compose 一鍵部署分布式配置中心Apollo的過(guò)程詳解
- docker-compose部署配置jenkins的詳細(xì)教程
- Docker Compose 配置指南小結(jié)
相關(guān)文章
Docker如何解決tomcat容器啟動(dòng)成功,無(wú)法訪問(wèn)的問(wèn)題
這篇文章主要介紹了Docker如何解決tomcat容器啟動(dòng)成功,無(wú)法訪問(wèn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07Docker?部署?vue?項(xiàng)目的詳細(xì)流程
使用Docker配合Nginx部署Vue3項(xiàng)目涉及多個(gè)步驟:首先安裝Nginx,然后創(chuàng)建掛載目錄及配置文件;接著打包Vue項(xiàng)目并上傳至服務(wù)器;最后創(chuàng)建Dockerfile,構(gòu)建鏡像并啟動(dòng)容器,部署完成后,通過(guò)IP訪問(wèn)應(yīng)用以驗(yàn)證是否成功2024-09-09docker nginx + https 子域名配置詳細(xì)教程
這篇文章主要介紹了docker nginx + https 子域名配置詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04docker部署Nestjs的簡(jiǎn)單配置實(shí)現(xiàn)
使用Docker部署NestJS應(yīng)用程序可以確保在不同的環(huán)境中運(yùn)行一致,并且避免了由于依賴關(guān)系或配置問(wèn)題導(dǎo)致的部署錯(cuò)誤,本文主要介紹了docker來(lái)部署Nestjs的簡(jiǎn)單配置,感興趣的可以了解一下2024-02-02Docker File創(chuàng)建鏡像失敗ERROR [3/4] RUN yum&nbs
文章描述了在使用DockerFile創(chuàng)建基于CentOS Linux 8的鏡像時(shí)遇到的問(wèn)題,即無(wú)法下載vim軟件包的元數(shù)據(jù),問(wèn)題的原因是CentOS Linux 8的AppStream倉(cāng)庫(kù)沒(méi)有可用的URL,為了解決這個(gè)問(wèn)題,作者建議將CentOS版本修改為7,因?yàn)镃entOS Linux 7的AppStream倉(cāng)庫(kù)通常有可用的URL2024-11-11使用Docker?Compose搭建部署ElasticSearch的配置過(guò)程
Elasticsearch使用的是一種名為倒排索引的數(shù)據(jù)結(jié)構(gòu),這一結(jié)構(gòu)的設(shè)計(jì)可以允許十分快速地進(jìn)行全文本搜索,本文重點(diǎn)給大家介紹使用Docker?Compose搭建部署ElasticSearch的配置過(guò)程,感興趣的朋友一起看看吧2022-02-02docker部署mysql 實(shí)現(xiàn)遠(yuǎn)程連接的示例代碼
這篇文章主要介紹了docker部署mysql 實(shí)現(xiàn)遠(yuǎn)程連接的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Docker私有倉(cāng)庫(kù)Registry部署的實(shí)現(xiàn)
這篇文章主要介紹了Docker私有倉(cāng)庫(kù)Registry部署的實(shí)現(xiàn),私有倉(cāng)庫(kù)最常用的就是Registry、Harbor兩種,本文詳細(xì)介紹如何搭建registry私有倉(cāng)庫(kù),感興趣的可以了解一下2020-06-06Docker為網(wǎng)絡(luò)bridge模式指定容器ip的方法
Docker在創(chuàng)建容器時(shí)有四種網(wǎng)絡(luò)模式,bridge為默認(rèn)不需要用--net去指定,其他三種模式需要在創(chuàng)建容器時(shí)使用--net去指定。那Docker為網(wǎng)絡(luò)bridge模式指定容器ip該如何實(shí)現(xiàn)呢?下面通過(guò)通過(guò)這篇文章一起看看吧,文中給出了詳細(xì)的示例代碼,有需要的可以參考借鑒。2016-11-11