Docker 是一种工具,用于自动在轻量级容器中部署应用程序,以便应用程序可以在不同的环境中独立高效地工作。
Docker
首先,在 macOS 上安装 Docker Desktop。
$ brew install --cask docker # 安装 Docker Desktop
$ brew install docker-compose # 安装 Docker Compose
$ docker run -p 3000:3000 -d get-started:latest # --restart=always --name get-started-test --rm -it
Docker Compose
Docker Compose 是一种用于定义和运行多容器应用程序的工具。它是解锁简化且高效的开发和部署体验的关键。
Compose 简化了对整个应用程序堆栈的控制,使您可以轻松地在单个易懂的 YAML 配置文件中管理服务、网络和卷。然后,使用单个命令,您可以从配置文件中创建和启动所有服务。
Compose 适用于所有环境;生产、准备、开发、测试以及 CI 工作流。它还具有用于管理应用程序整个生命周期的命令:
- 启动、停止和重建服务
- 查看正在运行的服务的状态
- 流式传输正在运行的服务的日志输出
- 在服务上运行一次性命令
$ docker compose build app
$ docker compose up -d
$ docker compose down
停止容器并删除 up 创建的容器、网络、卷和映像。默认情况下,仅删除以下内容:
- Compose 文件中定义的服务的容器。
- Compose 文件的 networks 部分中定义的网络。
- 默认网络(如果使用)。
- 定义为外部的网络和卷永远不会被删除。
默认情况下不会删除匿名卷。但是,由于它们没有稳定的名称,因此不会由后续 up 自动安装。对于需要在更新之间保留的数据,请使用显式路径作为绑定安装或命名卷。
常用命令
$ docker volume ls
$ docker volume prune
$ docker volume inspect delivery_storage
$ sudo chown 33:33 -R /var/lib/docker/volumes/delivery_storage
# docker cp .env delivery_fpm_1:/var/www/html/
# docker exec -u root delivery_fpm_1 chown www-data:www-data .env
# 容器编排
$ docker compose up -d # 启动所有服务
$ docker compose down -v # 关闭所有服务。-v, 同时删除所有卷
$ docker compose restart # 重启所有服务
$ docker compose restart app # 重启某个服务
$ docker compose logs -f # 查看所有服务的日志
$ docker compose logs app -f # 查看某个服务的日志
$ docker-compose up -d --scale worker=3 --no-recreate
# 容器内运行命令
$ docker compose exec redis redis-cli FLUSHALL # 在现有的容器内,执行命令
$ docker compose run --rm django python manage.py migrate # 复制一个新容器,执行命令。--rm, 随后删除该临时容器
$ docker compose run --rm django python manage.py createsuperuser --noinput