详解Docker之Compose服务编排

2020-06-17 06:53:28易采站长站整理

2、编写docker-compose.yml文件;
3、运行docker-compose up启动服务

示例

准备工作:提前下载好镜像:


docker pull mysql
docker pull wordpress

需要新建一个空白目录,例如wptest。新建一个docker-compose.yml


version: '2'
services:
web:
image: wordpress:latest
links:
- db
ports:
- "8002:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: 123456
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=123456

以上命令的意思是新建db和wordpress容器。等同于:


$ docker run --name db -e MYSQL_ROOT_PASSWORD=123456 -d mysql
$ docker run --name some-wordpress --link db:mysql -p 8002:80 -d wordpress

注意,如果你是直接从fig迁移过来的,且

web
links
- db:mysql
,这里会提示没有给wordpress设置环境变量,这里需要添加环境变量
WORDPRESS_DB_HOST
WORDPRESS_DB_PASSWORD

好,我们启动应用:


# docker-compose up
Creating wptest_db_1...
Creating wptest_wordpress_1...
Attaching to wptest_db_1, wptest_wordpress_1
wordpress_1 | Complete! WordPress has been successfully copied to /var/www/html

就成功了。浏览器访问 http://localhost:8002(或 http://host-ip:8002)即可。

默认是前台运行并打印日志到控制台。如果想后台运行,可以:


docker-compose up -d

服务后台后,可以使用下列命令查看状态:


# docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------
figtest_db_1 docker-entrypoint.sh mysqld Up 3306/tcp
figtest_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8002->80/tcp

# docker-compose logs
Attaching to wptest_wordpress_1, wptest_db_1
db_1 | 2016-10-4T14:38:46.98030Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
db_1 | 2016-10-4T14:38:46.99974Z 0 [Note] mysqld (mysqld 5.7.15) starting as process 1 ...
db_1 | 2016-10-4T14:38:46.27191Z 0 [Note] InnoDB: PUNCH HOLE support available

停止服务:


# docker-compose stop
Stopping wptest_wordpress_1...