使用Docker Compose部署SpringBoot應用

SpringBoot實戰電商項目mall(20k+star)地址: https://github.com/macrozheng/mall

摘要

Docker Compose是一個用於定義和運行多個docker容器應用的工具。使用Compose你能夠用YAML文件來配置你的應用服務,而後使用一個命令,你就能夠部署你配置的全部服務了。html

安裝

下載Docker Compose:

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

展現圖片

使用Docker Compose的步驟

  • 使用Dockerfile定義應用程序環境,通常須要修改初始鏡像行爲時才須要使用;
  • 使用docker-compose.yml定義須要部署的應用程序服務,以便執行腳本一次性部署;
  • 使用docker-compose up命令將全部應用服務一次性部署起來。

docker-compose.yml經常使用命令

image

指定運行的鏡像名稱mysql

# 運行的是mysql5.7的鏡像
image: mysql:5.7

container_name

配置容器名稱git

# 容器名稱爲mysql
container_name: mysql

ports

指定宿主機和容器的端口映射(HOST:CONTAINER)github

# 將宿主機的3306端口映射到容器的3306端口
ports:
  - 3306:3306

volumes

將宿主機的文件或目錄掛載到容器中(HOST:CONTAINER)sql

# 將外部文件掛載到myql容器中
volumes:
  - /mydata/mysql/log:/var/log/mysql
  - /mydata/mysql/data:/var/lib/mysql
  - /mydata/mysql/conf:/etc/mysql

environment

配置環境變量docker

# 設置mysqlroot賬號密碼的環境變量
environment:
  - MYSQL_ROOT_PASSWORD=root

links

鏈接其餘容器的服務(SERVICE:ALIAS)shell

# 能夠以database爲域名訪問服務名稱爲db的容器
links:
  - db:database

Docker Compose經常使用命令

構建、建立、啓動相關容器:

# -d表示在後臺運行
docker-compose up -d

中止全部相關容器:

docker-compose stop

列出全部容器信息:

docker-compose ps

使用Docker Compose 部署應用

編寫docker-compose.yml文件

Docker Compose將所管理的容器分爲三層,工程、服務及容器。docker-compose.yml中定義全部服務組成了一個工程,services節點下即爲服務,服務之下爲容器。容器與容器直之間能夠以服務名稱爲域名進行訪問,好比在mall-tiny-docker-compose服務中能夠經過jdbc:mysql://db:3306這個地址來訪問db這個mysql服務。
version: '3'
services:
  # 指定服務名稱
  db:
    # 指定服務使用的鏡像
    image: mysql:5.7
    # 指定容器名稱
    container_name: mysql
    # 指定服務運行的端口
    ports:
      - 3306:3306
    # 指定容器中須要掛載的文件
    volumes:
      - /mydata/mysql/log:/var/log/mysql
      - /mydata/mysql/data:/var/lib/mysql
      - /mydata/mysql/conf:/etc/mysql
    # 指定容器的環境變量
    environment:
      - MYSQL_ROOT_PASSWORD=root
  # 指定服務名稱
  mall-tiny-docker-compose:
    # 指定服務使用的鏡像
    image: mall-tiny/mall-tiny-docker-compose:0.0.1-SNAPSHOT
    # 指定容器名稱
    container_name: mall-tiny-docker-compose
    # 指定服務運行的端口
    ports:
      - 8080:8080
    # 指定容器中須要掛載的文件
    volumes:
      - /etc/localtime:/etc/localtime
      - /mydata/app/mall-tiny-docker-compose/logs:/var/logs

注意:若是遇到mall-tiny-docker-compose服務沒法鏈接到mysql,須要在mysql中創建mall數據庫,同時導入mall.sql腳本。具體參考使用Dockerfile爲SpringBoot應用構建Docker鏡像中的運行mysql服務並設置部分。數據庫

使用maven插件構建mall-tiny-docker-compose鏡像

展現圖片

注意:構建有問題的能夠參考使用Maven插件爲SpringBoot應用構建Docker鏡像服務器

運行Docker Compose命令啓動全部服務

先將docker-compose.yml上傳至Linux服務器,再在當前目錄下運行以下命令:app

docker-compose up -d

展現圖片

訪問接口文檔地址http://192.168.3.101:8080/swagger-ui.html:

展現圖片

項目源碼地址

https://github.com/macrozheng/mall-learning/tree/master/mall-tiny-docker-compose

公衆號

mall項目全套學習教程連載中,關注公衆號第一時間獲取。

公衆號圖片

相關文章
相關標籤/搜索