【docker-compose】docker-compose.yml文本內容詳解 + docker-compose命令詳解 + docker-compose啓動服務容器時區設置

參考地址:https://blog.csdn.net/Kiloveyousmile/article/details/79830810mysql

參考地址:https://docs.docker.com/compose/networking/#configure-the-default-networkspring

參考地址:https://www.imooc.com/article/34135sql

參考地址:https://www.jianshu.com/p/2217cfed29d7docker

====================================================數據庫

一.docker-compose.yml屬性詳解網絡

  1.使用注意app

  2.屬性詳解測試

  3.1 compose格式對應docker引擎版本ui

  3.2 關於容器時區設置和mysql數據庫本身的時區設置編碼

二.docker-compose 命令詳解

====================================================

 

 

一.docker-compose.yml屬性詳解

docker-compose.yml文本內容以下:

version : '3'
services:

  swapping:
    container_name: swapping-compose
    build:
      context: .
      dockerfile: Dockerfile-swapping
    ports:
      - "9666:9666"
    volumes:
      - .:/vol/development
    depends_on:
      - mysql
    links:
      - "mysql:mysql"
    restart: always
    networks:
      - my-network
    environment:
      - TZ=Asia/Shanghai

  mysql:
    container_name: mysql-compose
    image: mysql:5.7
    ports:
      - "33061:3306"
    command: [
            '--character-set-server=utf8mb4',
            '--collation-server=utf8mb4_unicode_ci',
            '--default-time-zone=+8:00'
    ]
    environment:
      MYSQL_DATABASE: swapping
      MYSQL_ROOT_PASSWORD: 398023
      MYSQL_ROOT_HOST: '%'
    restart: always
    networks:
      - my-network
networks:
  my-network:

 

使用注意:

  1.docker-compose.yml[或者docker-compose.yaml]文件

  2.構建服務的鏡像須要的Dockerfile文件

  3.構建服務須要的jar包

須要儘可能放在同一個目錄下!!

 

 

詳細解釋:

 

version : '3'        #docker引擎對應所支持的docker-compose文本格式
services:            #本工程的服務配置列表

  swapping:            #spring boot的服務名,服務名自定義
    container_name: swapping-compose    
                    #本spring boot服務以後啓動的容器實例的名字,若是指定,按照這個命名容器,若是未指定,容器命名規則是
                    #【[compose文件所在目錄]_[服務名]_1】,例如【swappingdockercompose_swapping_1】
            #若是多啓動,也就是docker-compose scale swapping=3 mysql=2的話,就不須要指定容器名稱,不然會報錯 容器名重複存在的問題 build: #基於Dockerfile文件構建鏡像時使用的屬性 context: . #表明當前目錄,也能夠指定絕對路徑[/path/test/Dockerfile]或相對路徑[../test/Dockerfile],儘可能放在當前目錄,便於管理 dockerfile: Dockerfile-swapping #指定Dockerfile文件名。若是context指定了文件名,這裏就不用本屬性了 ports: #影射端口屬性 - "9666:9666" #建議使用字符串格式,指定宿主機端口映射到本容器的端口 volumes: #掛載屬性 - .:/vol/development #掛載路徑在compose配置文件中只能指定容器內的目錄,而docker run命令能夠指定[宿主機目錄:容器內目錄]的掛載方式。能夠使用:ro對容器內目錄設置只讀,來保護宿主機的文件系統 depends_on: #本服務啓動,須要依賴哪些別的服務 例如這裏;mysql服務就會先於swapping服務啓動。至於配置多個的話,depends_on內的多個依賴的啓動前後順序未測試過 - mysql links: #與depends_on相對應,上面控制啓動順序,這個控制容器鏈接問題。 - "mysql:mysql" #值能夠是- mysql[- 服務名],也能夠是- "mysql:mysql"[- "服務名:別名"] restart: always #是否隨docker服務啓動重啓 networks: #加入指定網絡 - my-network #自定義的網絡名 environment: #environment 和 Dockerfile 中的 ENV 指令同樣會把變量一直保存在鏡像、容器中,相似 docker run -e 的效果。設置容器的環境變量 - TZ=Asia/Shanghai #這裏設置容器的時區爲亞洲上海,也就解決了容器經過compose編排啓動的 時區問題!!!!解決了容器的時區問題!!! mysql: #服務名叫mysql,自定義 container_name: mysql-compose #容器名 image: mysql:5.7 #雖然沒有使用build,但使用了image,指定基於mysql:5.7鏡像爲基礎鏡像來構建鏡像。【使用build基於Dockerfile文件構建,Dockerfile文件中也有FROM基於基礎鏡像】 ports: - "33061:3306" command: [ #使用 command 能夠覆蓋容器啓動後默認執行的命令 '--character-set-server=utf8mb4', #設置數據庫表的數據集 '--collation-server=utf8mb4_unicode_ci', #設置數據庫表的數據集 '--default-time-zone=+8:00' #設置mysql數據庫的 時區問題!!!! 而不是設置容器的時區問題!!!! ] environment: MYSQL_DATABASE: swapping #設置初始的數據庫名 MYSQL_ROOT_PASSWORD: 398023 #設置root鏈接密碼 MYSQL_ROOT_HOST: '%' restart: always networks: - my-network networks: #關於compose中的networks的詳細使用https://blog.csdn.net/Kiloveyousmile/article/details/79830810 my-network: #自定義的網絡,會在第一次構建時候建立自定義網絡,默認是bridge

 

 

1.compose格式對應docker引擎版本

官方地址:【https://docs.docker.com/compose/compose-file/#compose-and-docker-compatibility-matrix

查看docker版本信息命令

 

2.關於容器時區設置和mysql數據庫本身的時區設置

設置容器的時區,須要添加

environment:
      - TZ=Asia/Shanghai

 

而數據庫的時區設置【和編碼設置】就能夠,固然也能夠在mysql服務既設置容器時區,又設置數據庫時區。不衝突。

command: [
            '--character-set-server=utf8mb4',
            '--collation-server=utf8mb4_unicode_ci',
            '--default-time-zone=+8:00'
    ]

 

 

二.docker-compose命令詳解

 請直接參考:https://www.imooc.com/article/34135

 

用的多了,本身就會了。這裏就不記錄了!!!

相關文章
相關標籤/搜索