DockerCompose的目的:簡化Docker的啟動和停止流程,以及編排Docker啟動服務與服務之間的關系
DockerCompose的安裝:curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose version
curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m`>/usr/local/bin/docker-compose
docker-compose.yml文件的編寫,跟springboot中配置文件編寫的格式一樣,只是在寫yml文件的時候不能使用tab鍵縮進,不信可以試試
寫了一個簡單的tomcat的配置啟動配置文件
version: '3.1' services: tomcat: restart: always image: tomcat container_name: tomcat ports: - 8080:8080
啟動命令:在當前文件夾下執行 docker-compose up 就能啟動tomcat -d 后台運行
停止命令:docker-compose down 該命令會停止容器 並且 清除以docker-compose形式啟動的容器的記錄
原樣粘貼命令 :vi 某個文件之后 :set paste 再輸入i 就能按照復制的格式原樣粘貼
下面的操作都是在 /usr/local/ 下面的文件夾下操作的,遵循linux文件夾工作范圍規定 如果你不想在該文件夾下 換其他地方也無所謂
部署tomcat
1.docker-compose.yml
version: '3.1' services: tomcat: restart: always image: tomcat container_name: tomcat ports: - 8080:8080 volumes: - ./webapps:/usr/local/tomcat/webapps environment: TZ: Asia/Shanghai
2.運行 docker-compose up -d
這時在你所在的目錄下會生成一個文件夾 webapps ,這個文件夾叫做 數據卷 ,這個位置與容器中的
/usr/local/tomcat/webapps 位置共享內存,也就是說兩者的文件夾下的文件內容都是一致的,這樣就不用再擔心容器關閉的時候,應用數據持久化的問題
即使容器刪除這塊的數據依然會保留
部署mysql
1.docker-compose.yml
version: '3.1' services: db: # 目前 latest 版本為 MySQL8.x image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: 123456 command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 ports: - 3306:3306 volumes: - ./data:/var/lib/mysql # MySQL 的 Web 客戶端 adminer: image: adminer restart: always ports: - 8080:8080
2.同tomcat一樣,docker會在本地創建一個與容器中數據共享的存儲空間
至此tomcat和mysql已經部署完成,至於如何部署項目,我想就不用我多說了吧 ?
簡單說一下:首先把項目打好的war包解壓到tomcat生成的webapps文件夾下刪除多余的文件, 將數據庫初始化語句和歷史數據執行導入,啟動兩個容器就可以了 。