Dockerfile:

ARG buildno
ARG password

RUN echo "Build number: $buildno"
RUN script-requiring-password.sh "$password"

docker-compose.yml:

build:
  context: .
  args:
    buildno: 1
     secret

build:
  context: .
  args:
    - buildno=1
    - password=secret

command

用來覆蓋缺省命令。示例:

command: bundle exec thin -p 3000

command也支持數組形式:

command: [bundle, exec, thin, -p, 3000]

links

用于鏈接另一容器服務,如需要使用到另一容器的mysql服務。可以給出服務名和別名;也可以僅給出服務名,這樣別名將和服務名相同。同docker run --link。示例:

links:
 - db
 - db:Mysql
 - redis

使用了別名將自動會在容器的/etc/hosts文件里創建相應記錄:

172.17.2.186  db
172.17.2.186  MYSQL
172.17.2.187  redis

所以我們在容器里就可以直接使用別名作為服務的主機名。

ports

用于暴露端口。同docker run -p。示例:

ports:
 - "3000"
 - "8000:8000"
 - "49100:22"
 - "127.0.0.1:8001:8001"

expose

expose提供container之間的端口訪問,不會暴露給主機使用。同docker run --expose

expose:
 - "3000"
 - "8000"

volumes

掛載數據卷。同docker run -v。示例:

volumes:
 - /var/lib/mysql
 - cache/:/tmp/cache
 - ~/configs:/etc/configs/:ro

volumes_from

掛載數據卷容器,掛載是容器。同docker run --volumes-from。示例:

volumes_from:
 - service_name
 - service_name:ro
 - container:container_name
 - container:container_name:rw

container:container_name格式僅支持version 2

environment

添加環境變量。同docker run -e。可以是數組或者字典格式:

environment:
  RACK_ENV: development
  SESSION_SECRET:

environment:
  - RACK_ENV=development
  - SESSION_SECRET

depends_on

使用 Compose 時,最大的好處就是少打啟動命令,但是一般項目容器啟動的順序是有要求的,如果直接從上到下啟動容器,必然會因為容器依賴問題而啟動失敗。
例如在沒啟動數據庫容器的時候啟動了應用容器,這時候應用容器會因為找不到數據庫而退出,為了避免這種情況我們需要加入一個標簽,就是 depends_on,這個標簽解決了容器的依賴、啟動先后的問題。
例如下面容器會先啟動 redis 和 db 兩個服務,最后才啟動 web 服務:

ersion: '2'
services:
  web:
    build: .
    depends_on:
      - db
      - redis
  redis:
    image: redis
  db:
    image: postgres

注意的是,默認情況下使用 docker-compose up web 這樣的方式啟動 web 服務時,也會啟動 redis 和 db 兩個服務,因為在配置文件中定義了依賴關系。

external_links

鏈接搭配docker-compose.yml文件或者Compose之外定義的服務,通常是提供共享或公共服務。格式與links相似:

external_links:
 - redis_1
 - project_db_1:mysql
 - project_db_1:postgresql

注意,external_links鏈接的服務與當前服務必須是同一個網絡環境。

extra_hosts

添加主機名映射。

extra_hosts:
 - "somehost:162.242.195.82"
 - "otherhost:50.31.209.229

將會在/etc/hosts創建記錄:

162.242.195.82  somehost
50.31.209.229   otherhost

extends

繼承自當前yml文件或者其它文件中定義的服務,可以選擇性的覆蓋原有配置。

extends:
  file: common.yml
  service: webapp

service必須有,file可選。service是需要繼承的服務,例如webdatabase

net

設置網絡模式。同docker的--net參數。

net: "bridge"
net: "none"
net: "container:[name or id]"
net: "host"

dns

自定義dns服務器。

dns: 8.8.8.8
dns:
  - 8.8.8.8
  - 9.9.9.9

完整列子:

zookeeper:
  image: ce3dc5339ed2
  #指定為鏡像名稱或鏡像 ID
  privileged: false
  restart: always
 # 默認值為 no ,即在任何情況下都不會重新啟動容器;當值為 always 時,容器總是重新啟動;當值為 on-failure 時,當出現 on-failure #報錯容器退出時,容器重新啟動。
  log_driver: json-file
  #默認的driver是json-file。只有json-file和journald可以通過docker-compose logs顯示日志
  ports:
  - ip::2181/tcp:2181/tcp
   #暴露端口信息。
   #使用宿主:容器 (HOST:CONTAINER)格式或者僅僅指定容器的端口(宿主將會隨機選擇端口)都可以。
   # - "3000"
   #- "8000:8000"
   #- "127.0.0.1:8001:8001"
   #注:當使用 HOST:CONTAINER 格式來映射端口時,如果你使用的容器端口小于 60 你可能會得到錯誤得結果,因為 YAML 將會解析 xx:yy 這種數字格式為 60 進制。所以建議采用字符串格式。
  volumes:
  - /data/zookeeper/logs/:/zookeeper/logs/
  - /data/zookeeper/data/:/zookeeper/data/
  - /data/zookeeper/conf/:/zookeeper/conf/
 # 掛載一個目錄或者一個已存在的數據卷容器,可以直接使用 [HOST:CONTAINER] 這樣的格式,或者使用 [HOST:CONTAINER:ro] 這樣的格式,后者對于容器來說,數據卷是只讀的,這樣可以有效保護宿主機的文件系統。
  #Compose的數據卷指定路徑可以是相對路徑,使用 . 或者 .. 來指定相對目錄。
  #卷掛載路徑設置。可以設置宿主機路徑 (HOST:CONTAINER) 或加上訪問模式 (HOST:CONTAINER:ro)。
  command: /root/zookeeper.sh 
  #覆蓋容器啟動后默認執行的命令。
  environment:
  -.utf8
  - TZ=Asia/Shanghai
  #設置環境變量。你可以使用數組或字典兩種格式。
  #只給定名稱的變量會自動獲取它在 Compose 主機上的值,可以用來防止泄露不必要的數據。
   #environment:
   #- RACK_ENV=development
   #- SESSION_SECRET
   
   
  # depends_on
   #在使用 Compose 時,最大的好處就是少打啟動命令,但是一般項目容器啟動的順序是有要求的,如果直接從上到下啟動容器,必然會因為容器依賴問題而啟動失敗。
#例如在沒啟動數據庫容器的時候啟動了應用容器,這時候應用容器會因為找不到數據庫而退出,為了避免這種情況我們需要加入一個標簽,就是 depends_on,這個標簽解決了容器的依賴、啟動先后的問題。
  #例如下面容器會先啟動 redis 和 db 兩個服務,最后才啟動 web 服務:
 #version: '2'
 #services:
  # web:
   #  build: .
   #  depends_on:
   #    - db
   #    - redis
   #redis:
    # image: redis
  # db:
    # image: postgres

    
    
  #links
 #還記得上面的depends_on吧,那個標簽解決的是啟動順序問題,這個標簽解決的是容器連接問題,與Docker client的--link一樣效果,會連接到其它服務中的容器。
  #格式如下:
  #links:
   #- db
    #- db:database
    #- redis
 #使用的別名將會自動在服務容器中的/etc/hosts里創建。例如:
  #172.12.2.186  db
  #172.12.2.186  database
  #172.12.2.187  redis

sso:
  image: 698063d64ab5
  privileged: false
  restart: always
  log_driver: json-file
  ports:
  - 172.16.0.13:7000/tcp:7000/tcp
  - 172.16.0.13:10000/tcp:10000/tcp
  volumes:
  - /data/tomcat/sso/logs/:/tomcat/logs/
  - /data/tomcat/sso/server.xml:/tomcat/conf/server.xml
  - /data/tomcat/sso/catalina.sh:/tomcat/bin/catalina.sh
  - /data/tomcat/sso/sso.properties:/tomcat/webapps/sso/WEB-INF/classes/sso.properties
  - /data/webapps/sso/:/tomcat/webapps/sso/
  command: /root/tomcat.sh
  environment:
  -.utf8
  - TZ=Asia/Shanghai
  - DEBUGPORT=10000
  - CATALINA_OPTS=-Djava.security.egd=file:///dev/urandom

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯官網:m.shinetop.cn

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » Docker Compose 配置文件 Docker-Compose.yml 文件詳解

登錄

找回密碼

注冊

主站蜘蛛池模板: 鄂尔多斯市| 无码av中文一区二区三区桃花岛| 中文字幕在线精品国产| 欧美成人精品三级网站视频| 成人乱码一区二区三区四区| 无码AV无码免费一区二区| 国产裸体无遮挡免费精品| 成人天堂资源www在线| 国产精品国产三级国产专业 | 艳妇乳肉豪妇荡乳xxx| 自拍第一区视频在线观看| 渭南市| 乱女乱妇熟女熟妇综合网| 三河市| 久久99久国产精品66| 人妻夜夜爽天天爽三区丁香花| 亚洲国产精品一区在线看| 麻豆国产AV剧情偷闻女邻居内裤| 老熟妇欲乱一区二区三区| 开心一区二区三区激情| 性色欲情网站iwww九文堂| 久久九九久精品国产免费直播 | 中国CHINA体内裑精亚洲日本| 亚洲欧美中文字幕日韩一区二区| 亚洲VA成无码人在线观看天堂| 视频一区二区 国产视频| 日本一本正道综合久久dvd| 欧美成人h精品网站| 性欧美老人牲交xxxxx视频| 中文字幕亚洲男人的天堂| 日韩精品中文字幕有码| 久久综合亚洲鲁鲁九月天| 精品国产精品中文字幕| 人妻出轨av中文字幕| 无码乱人伦一区二区亚洲| 国产不卡精品视频男人的天堂| 久久精品国产99久久6| 高安市| 色综合色综合色综合久久| 99久re热视频这里只有精品6| 亚洲男人AV天堂午夜在|