Docker fig.yml參考

2018-08-04 18:04 更新

每個(gè)在 fig.yml 定義的服務(wù)都需要指定一個(gè)鏡像或鏡像的構(gòu)建內(nèi)容。像 docker run 的命令行一樣,其它內(nèi)容是可選的。

docker runDockerfile 中設(shè)置的選項(xiàng)(例如:CMD, EXPOSE, VOLUME, ENV) 作為已經(jīng)提供的默認(rèn)設(shè)置 - 你不需要在 fig.yml 中重新設(shè)置。

image

這里可以設(shè)置為標(biāo)簽或鏡像ID的一部分。它可以是本地的,也可以是遠(yuǎn)程的 - 如果鏡像在本地不存在,Fig 將會(huì)嘗試?yán)ミ@個(gè)鏡像。

image: ubuntu
image: orchardup/postgresql
image: a4bc65fd

build

指定 Dockerfile 所在文件夾的路徑。 Fig 將會(huì)構(gòu)建這個(gè)鏡像并給它生成一個(gè)名字,然后使用這個(gè)鏡像。

build: /path/to/build/dir

command

覆蓋默認(rèn)的命令。

command: bundle exec thin -p 3000

links

在其它的服務(wù)中連接容器。使用服務(wù)名稱(經(jīng)常也作為別名)或服務(wù)名稱加服務(wù)別名 (SERVICE:ALIAS) 都可以。

links:
 - db
 - db:database
 - redis

可以在服務(wù)的容器中的 /etc/hosts 里創(chuàng)建別名。例如:

172.17.2.186  db
172.17.2.186  database
172.17.2.187  redis

環(huán)境變量也將被創(chuàng)建 - 細(xì)節(jié)查看環(huán)境變量參考章節(jié)。

ports

暴露端口。使用宿主和容器 (HOST:CONTAINER) 或者僅僅容器的端口(宿主將會(huì)隨機(jī)選擇端口)都可以。

注:當(dāng)使用 HOST:CONTAINER 格式來(lái)映射端口時(shí),如果你使用的容器端口小于60你可能會(huì)得到錯(cuò)誤得結(jié)果,因?yàn)?YAML 將會(huì)解析 xx:yy 這種數(shù)字格式為60進(jìn)制。所以我們建議用字符指定你得端口映射。

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

expose

暴露不發(fā)布到宿主機(jī)的端口 - 它們只被連接的服務(wù)訪問(wèn)。僅僅內(nèi)部的端口可以被指定。

expose:
 - "3000"
 - "8000"

volumes

卷掛載路徑設(shè)置??梢栽O(shè)置宿主機(jī)路徑 (HOST:CONTAINER) 或訪問(wèn)模式 (HOST:CONTAINER:ro) 。

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

volumes_from

從另一個(gè)服務(wù)或容器掛載所有卷。

volumes_from:
 - service_name
 - container_name

environment

設(shè)置環(huán)境變量。你可以使用數(shù)組或字典兩種格式。

環(huán)境變量在運(yùn)行 Fig 的機(jī)器上被解析成一個(gè)key。它有助于安全和指定的宿主值。

environment:
  RACK_ENV: development
  SESSION_SECRET:

environment:
  - RACK_ENV=development
  - SESSION_SECRET

net

設(shè)置網(wǎng)絡(luò)模式。使用和 docker client--net 參數(shù)一樣的值。

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

dns

配置DNS服務(wù)器。它可以是一個(gè)值,也可以是一個(gè)列表。

dns: 8.8.8.8
dns:
  - 8.8.8.8
  - 9.9.9.9

working_dir, entrypoint, user, hostname, domainname, mem_limit, privileged

這些都是和 docker run 對(duì)應(yīng)的一個(gè)值。

working_dir: /code
entrypoint: /code/entrypoint.sh
user: postgresql

hostname: foo
domainname: foo.com

mem_limit: 1000000000
privileged: true
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)