DockerCompose详解

安装docker-compose

官方地址

环境配置文件.env

Compose支持在当前工作目录下建立.env文件,用来声明Compose默认的环境变量,比如service的某些环境变量:

# .env 文件
KEY=VAL

Compose CLI支持的环境变量

# 项目名称,如果此Compose拥有两个service:web,redis 则compose up后,这两个容器名称分别为myapp_web_1与myapp_redis_1
COMPOSE_PROJECT_NAME=myapp
# 指定compose文件的路径,未提供则在当前目录下查找,然后再查找父目录,直到查找到docker-compose.yml文件
# 可以设置多个文件,再macOs下,分隔符为: 再windows下,分隔符为;
# 可以通过COMPOSE_PATH_SEPARATOR设置路径分隔符
COMPOSE_FILE=docker-compose.yml:docker-compose.prod.yml
# 设置路径分隔符
COMPOSE_PATH_SEPARATOR=;

COMPOSE_API_VERSION
DOCKER_HOST
DOCKER_TLS_VERIFY
DOCKER_CERT_PATH
COMPOSE_HTTP_TIMEOUT
COMPOSE_TLS_VERSION
COMPOSE_CONVERT_WINDOWS_PATHS
COMPOSE_FORCE_WINDOWS_HOST
COMPOSE_IGNORE_ORPHANS
COMPOSE_PARALLEL_LIMIT
COMPOSE_INTERACTIVE_NO_CLI

常用命令总结

docker-compose up 使用当前目录下的docker-compose.yml文件构建并启动容器,此方式在前台运行
docker-compose -f docker-compose.yml up 使用-f指定compose.yml文件的位置
docker-compose up -d (--detach)此时方式在后台运行(守护进程模式)
docker-compose ps 查看当前docker-compose文件夹下的所有容器极其状态
docker-compose logs redis  查看redis service的compose日志
docker-compose stop  停止compose服务,此时在使用ps命令查询时,容器已是退出状态
docker-compose restart  重启compose服务
docker-compose kill 强制杀掉compose服务
docker-compose rm  删除compose服务
docker-compose up -d nginx                     构建建启动nignx容器
docker-compose exec nginx bash            登录到nginx容器中
docker-compose down                              删除所有nginx容器,镜像
docker-compose ps                                   显示所有容器
docker-compose restart nginx                   重新启动nginx容器
docker-compose run --no-deps --rm php-fpm php -v  在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
docker-compose build nginx                     构建镜像 。
docker-compose build --no-cache nginx   不带缓存的构建。
docker-compose logs  nginx                     查看nginx的日志
docker-compose logs -f nginx                   查看nginx的实时日志
docker-compose config  -q                        验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose events --json nginx       以json的形式输出nginx的docker日志
docker-compose pause nginx                 暂停nignx容器
docker-compose unpause nginx             恢复ningx容器
docker-compose rm nginx                       删除容器(删除前必须关闭容器)
docker-compose stop nginx                    停止nignx容器
docker-compose start nginx                    启动nignx容器

build              Build or rebuild services
bundle             Generate a Docker bundle from the Compose file
config             Validate and view the Compose file
create             Create services
down               Stop and remove containers, networks, images, and volumes
events             Receive real time events from containers
exec               Execute a command in a running container
help               Get help on a command
images             List images
kill               Kill containers
logs               View output from containers
pause              Pause services
port               Print the public port for a port binding
ps                 List containers
pull               Pull service images
push               Push service images
restart            Restart services
rm                 Remove stopped containers
run                Run a one-off command
scale              Set number of containers for a service
start              Start services
stop               Stop services
top                Display the running processes
unpause            Unpause services
up                 Create and start containers
version            Show the Docker-Compose version information

我自己的wordpress博客示例

docker-compose.yaml:

version: "3"
services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PWD}
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PWD}
    volumes:
      - ./db_data:/var/lib/mysql
  wordpress:
    image: wordpress:latest
    depends_on:
      - db
    ports:
      - 8000:80
    restart: always
    environment:
      VIRTUAL_HOST: yangsx95.com
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: ${DB_USER}
      WORDPRESS_DB_PASSWORD: ${DB_PWD}
    volumes:
      - ./wp_site:/var/www/html

.env文件:

DB_ROOT_PWD=xxx
DB_DATABASE=wordpress
DB_USER=wordpress
DB_PWD=xxxs

最后更新于