Docker实践8:Compose
最后更新于:2022-04-01 06:43:38
今天要在我的本子上搭建一个mediawiki环境,之前的经验,用fig去配置是最简单的了。可是下载fig失败,去官网一看才知道,fig已经被compose工具取代了。原文是这样说的:
~~~
Fig has been replaced by Docker Compose, and is now deprecated. The new documentation is on the Docker website.
~~~
既然如此,就去官网看看compose到底为何物。
[compose](http://docs.docker.com/compose/)是用来在docker中定义和运行复杂应用的小工具,比如在一个文件中定义多个容器,只用一行命令就可以让一切就绪并运行。它的功能与我们所熟知的fig相似,换句话说,compose是fig的替代产品,fig就这样退出docker的历史舞台了。
然而在[github上的compose](https://github.com/docker/compose/releases/)有这样的说法:
~~~
Fig has been renamed to Docker Compose, or just Compose for short. This has several implications for you:
The command you type is now docker-compose, not fig.
You should rename your fig.yml to docker-compose.yml.
~~~
看来fig是被重命名成compose了,配置文件变成了docker-compose.yml,其他都几乎一样。不但fig不能下载了,原来有fig工具的环境用fig去搭建mediawiki都不可用了,报错如下:
~~~
fig up -d
Creating hgserver_mediawiki_1...
Pulling image amclain/hgweb...
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "/code/build/fig/out00-PYZ.pyz/fig.cli.main", line 31, in main
File "/code/build/fig/out00-PYZ.pyz/fig.cli.docopt_command", line 21, in sys_dispatch
File "/code/build/fig/out00-PYZ.pyz/fig.cli.command", line 28, in dispatch
File "/code/build/fig/out00-PYZ.pyz/fig.cli.docopt_command", line 24, in dispatch
...
fig.progress_stream.StreamOutputError: Get https://index.docker.io/v1/repositories/amclain/hgweb/images: dial tcp: lookup index.docker.io on 10.202.72.118:53: read udp 10.202.72.118:53: i/o timeout
~~~
如此看来,使用compose是必须的了。
下面说说compose的用法。
1.安装compose
OS X和64位的Linux用如下命令安装。
~~~
# curl -L https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#chmod +x /usr/local/bin/docker-compose
~~~
其他平台可以像python包一样安装:
~~~
$ sudo pip install -U docker-compose
~~~
2.命令简介
~~~
$ docker-compose
Fast, isolated development environments using Docker.
Usage:
docker-compose [options] [COMMAND] [ARGS...]
docker-compose -h|--help
Options:
--verbose Show more output
--version Print version and exit
-f, --file FILE Specify an alternate compose file (default: docker-compose.yml)
-p, --project-name NAME Specify an alternate project name (default: directory name)
Commands:
build Build or rebuild services
help Get help on a command
kill Kill containers
logs View output from containers
port Print the public port for a port binding
ps List containers
pull Pulls service images
rm Remove stopped containers
run Run a one-off command
scale Set number of containers for a service
start Start services
stop Stop services
restart Restart services
up Create and start containers
~~~
3.compose编写mediawiki的docker-compose.yml
首先编写compose的配置文件,语法与fig类似,文件名为docker-compose.yml,内容如下:
~~~
wiki2:
image: 'nickstenning/mediawiki'
ports:
- "8880:80"
links:
- db:database
volumes:
- /data/wiki2:/data
db:
image: "mysql"
expose:
- "3306"
environment:
- MYSQL_ROOT_PASSWORD=defaultpass
~~~
4.创建并启动mediawiki
~~~
$ docker-compose up -d
~~~