最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker-compose部署Java應用和相關依賴方式

 更新時間:2024年10月31日 08:43:23   作者:萊特昂  
介紹如何使用docker-compose一鍵部署Java應用及依賴,并實現(xiàn)MySQL數(shù)據(jù)庫的自動初始化

docker-compose部署Java應用和相關依賴

上次用了docker遠程部署之后,發(fā)現(xiàn)還是有點不方便的地方。2357上傳了鏡像之后,不會自動啟動成容器,而且許多啟動時的命令還要重新打。

換臺機器還要從偷裝mysql和minio等等。網(wǎng)上看到能通過docker-compose進行一鍵部署。

docker-compose部署分為以下幾步:

  1. 下載docker-compose
  2. 編寫build鏡像相關的dockerfile
  3. 編寫docker-compose啟動的yml文件

以本Java應用為例,dockerfile已經(jīng)本地通過IDEA的docker-maven-plugin插件打好了,可以忽略第二步。直接進行1、3。

1. 下載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

修改權限為可執(zhí)行的

chmod +x /usr/local/bin/docker-compose

查看是否安裝成功

docker-compose --version

3. 編寫docker-compose啟動的yml文件

本地IDEA中編寫docker-compose.yml,用于啟動web應用啟動所需要的依賴:

version: '3'
services:
  # 指定服務名稱
  mysql:
    # 指定服務使用的鏡像
    image: mysql:5.7
    # 指定容器名稱
    container_name: mysql
    restart: always
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    # 指定服務運行的端口
    ports:
      - 3306:3306
    # 指定容器中需要掛載的文件
    volumes:
      - /mydata/mysql/data/db:/var/lib/mysql #數(shù)據(jù)文件掛載
      - /mydata/mysql/data/conf:/etc/mysql/conf.d #配置文件掛載
      - /mydata/mysql/log:/var/log/mysql #日志文件掛載
    # 指定容器的環(huán)境變量
    environment:
      - MYSQL_ROOT_PASSWORD=root

  # 指定服務名稱
  minio:
    # 指定服務使用的鏡像
    image: minio/minio
    # 指定容器名稱
    container_name: minio
    restart: always
    # 指定服務運行的端口
    ports:
      - 9000:9000 # api 端口
      - 9090:9090 # 控制臺端口
    # 指定容器中需要掛載的文件
    volumes:
      - /mydata/minio/data:/data               #映射當前目錄下的data目錄至容器內(nèi)/data目錄
      - /mydata/minio/config:/root/.minio/     #映射配置目錄
      - /etc/localtime:/etc/localtime
    # 指定容器的環(huán)境變量
    environment:
      MINIO_ACCESS_KEY: minioadmin    #管理后臺用戶名
      MINIO_SECRET_KEY: minioadmin #管理后臺密碼,最小8個字符
    command: server -console-address ":9000" --address ":9090" /data  #指定容器中的目錄 /data
  
  nginx:
    image: nginx:1.10
    restart: always
    container_name: nginx
    volumes:
      - /mydata/nginx/nginx.conf:/etc/nginx/nginx.conf #配置文件掛載
      - /mydata/nginx/html:/usr/share/nginx/html #靜態(tài)資源根目錄掛載
      - /mydata/nginx/log:/var/log/nginx #日志文件掛載
      - #若用到ssl,可以引入
      - /mydata/nginx/ssl:/etc/nginx/ssl
    ports:
      - 80:80
      - 443:443

啟動Java應用的yml:

version: '3'
services:
  # 指定服務名稱
  mall-tiny-docker-compose:
    # 指定服務使用的鏡像
    image: mall-tiny/mall-tiny:1.0.0-SNAPSHOT
    # 指定容器名稱
    container_name: mall
    depends_on:
      - minio
      - mysql
    # 指定服務運行的端口
    ports:
      - 8080:8080
    # 指定容器中需要掛載的文件
    volumes:
      - /etc/localtime:/etc/localtime
      - /mydata/app/mall-tiny-docker-compose/logs:/var/logs
    external_links:
      - minio:minio #可以用redis這個域名訪問redis服務
      - mysql:mysql #可以用mongo這個域名訪問mongo服務

之所以分開寫是因為,啟動完mysql還要手動輸入sql文件生成數(shù)據(jù)庫,再去跑web應用的Java應用的ym,不然會起不來,報數(shù)據(jù)庫表找不到的error。

先啟動依賴:

docker-compose -f docker-compose.yml up -d

然后本地連上mysql導入相關的數(shù)據(jù)表后,啟動web:

docker-compose -f docker-compose-app.yml up -d

此時均已按相關參數(shù)啟動,可通過docker ps查看,也可能調(diào)服務驗證。

另外有幾個命令參考:

#停止所有相關容器
docker-compose stop
#列出所有容器信息
docker-compose ps

后續(xù)要想辦法把數(shù)據(jù)庫初始化也干了,絕對有方法的,不然一堆集群的話要怎么搞呢??吹揭环N方法是加啟動指令,在但是也要再掛載的目錄里把sql提前復制過去。

這也不是一種很好的方法。也有是直接寫腳本,把要打的sql都先放腳本里,到時候一鍵啟動腳本創(chuàng)建目錄和sql,再自動運行docker-compose的yml。

這確實是一種方法,后面機器多了可以試試。

command: --init-file /docker-entrypoint-initdb.d/init.sql

4. 停止docker-compose啟動程序

  • docker-compose stop:這個命令只會停止docker-compose運行的容器,不會刪除容器。
  • docker-compose down:推薦,在停止docker-compose運行容器的同時,刪除容器

不過鏡像還是都在的,想要刪除鏡像只能通過docker image rm的方式

2022.11.19更新

看到一種創(chuàng)建數(shù)據(jù)庫容器的時候,也把sql初始化的方法。當Mysql容器首次啟動時,會在 /docker-entrypoint-initdb.d目錄下掃描 .sh,.sql,.sql.gz類型的文件。

如果這些類型的文件存在,將執(zhí)行它們來初始化一個數(shù)據(jù)庫。這些文件會按照字母的順序執(zhí)行。

那么,數(shù)據(jù)庫的docker-compose的部分就能寫成這樣:

  mysql:
    image: mysql:8.0.30
    restart: always
    container_name: mysql
    volumes:
      - ../volumes/data/mysqldata:/var/lib/mysql
      - ./config/my.cnf:/etc/mysql/conf.d/my.cnf
      #      數(shù)據(jù)庫還原目錄 可將需要還原的sql文件放在這里
      - ./init/mysql:/docker-entrypoint-initdb.d
    environment:
      - "MYSQL_ROOT_PASSWORD=lilishop"
      - "MYSQL_DATABASE=lilishop"
      - "TZ=Asia/Shanghai"
    ports:
      - 3306:3306

初始化就是這句:

- ./init/mysql:/docker-entrypoint-initdb.d

上傳服務器的時候,把整個文件夾傳上去,結構類似這種:

在當前文件夾運行docker-compose啟動指令,即可創(chuàng)建數(shù)據(jù)庫容器的時候,初始化數(shù)據(jù)庫。

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Docker 網(wǎng)絡代理配置及防火墻設置的方法步驟

    Docker 網(wǎng)絡代理配置及防火墻設置的方法步驟

    在服務器無法直接訪問外網(wǎng)的環(huán)境中,Docker命令需要通過網(wǎng)絡代理連接,本文就來介紹一下Docker 網(wǎng)絡代理配置及防火墻設置的方法步驟,感興趣的可以了解一下
    2024-10-10
  • docker內(nèi)的容器如何與宿主機共享IP的方法

    docker內(nèi)的容器如何與宿主機共享IP的方法

    本文主要介紹了docker內(nèi)的容器如何與宿主機共享IP的方法,文中根據(jù)實例編碼詳細介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 使用Docker+Nginx部署vue項目詳細圖文教程

    使用Docker+Nginx部署vue項目詳細圖文教程

    這篇文章主要給大家介紹了關于使用Docker+Nginx部署vue項目的相關資料,文中通過圖文介紹的非常詳細,對大家學習或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • docker+daocloud實現(xiàn)前端項目自動構建部署

    docker+daocloud實現(xiàn)前端項目自動構建部署

    這篇文章主要介紹了docker+daocloud實現(xiàn)前端項目自動構建部署,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • 使用Docker Swarm搭建分布式爬蟲集群的方法示例

    使用Docker Swarm搭建分布式爬蟲集群的方法示例

    這篇文章主要介紹了使用Docker Swarm搭建分布式爬蟲集群的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • docker 可用鏡像服務地址的使用(親測可用)

    docker 可用鏡像服務地址的使用(親測可用)

    Docker可用的鏡像服務地址通常指的是Docker鏡像倉庫的地址,用于拉取和推送鏡像,本文就來介紹了docker 可用鏡像服務地址的使用,感興趣的可以了解一下
    2024-10-10
  • docker compose up 命令默認配置文件自動查找規(guī)則詳解

    docker compose up 命令默認配置文件自動查找規(guī)則詳解

    DockerCompose在沒有指定配置文件時,會按照優(yōu)先級順序查找compose.yaml、compose.ymldocker-compose.yml等文件,官方推薦使用compose.yaml,本文給大家介紹docker compose up 命令默認配置文件自動查找規(guī)則詳解,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Docker之Compose的安裝和使用過程

    Docker之Compose的安裝和使用過程

    DockerCompose是用于定義和運行多容器應用的工具,通過定義yml文件自動創(chuàng)建或管理容器,簡化了Docker操作,本文詳細介紹了DockerCompose的安裝步驟、版本差異以及基本命令,幫助用戶更好地理解和使用DockerCompose
    2026-04-04
  • 基于Docker、Nginx和Jenkins實現(xiàn)前端自動化部署

    基于Docker、Nginx和Jenkins實現(xiàn)前端自動化部署

    本文主要介紹了搭建Docker+Nginx+Jenkins環(huán)境,用于實現(xiàn)前端自動化部署的流程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Docker?搭建?RabbitMQ的詳細過程

    Docker?搭建?RabbitMQ的詳細過程

    在現(xiàn)代微服務與分布式架構中,RabbitMQ?是一款成熟的開源消息隊列中間件,提供了可靠的消息投遞、豐富的路由策略和管理插件,本文將詳細介紹Docker?搭建?RabbitMQ的過程,感興趣的朋友一起看看吧
    2025-04-04

最新評論

麦盖提县| 天全县| 卢龙县| 泾川县| 元氏县| 灵丘县| 谷城县| 卫辉市| 屏南县| 将乐县| 鄢陵县| 铁岭县| 尼勒克县| 邵阳市| 云和县| 灵石县| 阜城县| 开江县| 通城县| 天气| 靖江市| 西安市| 胶南市| 伊金霍洛旗| 象州县| 五台县| 眉山市| 安泽县| 奉贤区| 海口市| 连山| 内黄县| 英德市| 河北区| 榆树市| 黄山市| 大埔区| 策勒县| 晋州市| 遵化市| 彰武县|