mirror of
https://github.com/yeasy/docker_practice.git
synced 2026-03-23 10:15:24 +00:00
Fix and update
This commit is contained in:
@@ -34,6 +34,8 @@ $ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
|
||||
|
||||
### 测试安装
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker compose version
|
||||
Docker Compose version v2.40.3
|
||||
@@ -41,6 +43,8 @@ Docker Compose version v2.40.3
|
||||
|
||||
### bash 补全命令
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ curl -L https://raw.githubusercontent.com/docker/compose/v2.40.3/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
|
||||
```
|
||||
@@ -51,4 +55,4 @@ $ curl -L https://raw.githubusercontent.com/docker/compose/v2.40.3/contrib/compl
|
||||
|
||||
```bash
|
||||
$ rm $DOCKER_CONFIG/cli-plugins/docker-compose
|
||||
```
|
||||
```
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
## 使用
|
||||
|
||||
本节将通过一个具体的 Web 应用案例,介绍 Docker Compose 的基本概念和使用方法。
|
||||
|
||||
### 术语
|
||||
|
||||
首先介绍几个术语。
|
||||
@@ -67,6 +69,8 @@ services:
|
||||
|
||||
#### 运行 compose 项目
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker compose up
|
||||
```
|
||||
@@ -78,18 +82,24 @@ $ docker compose up
|
||||
|
||||
#### 后台运行
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker compose up -d
|
||||
```
|
||||
|
||||
#### 停止
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker compose stop
|
||||
```
|
||||
|
||||
#### 进入服务
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker compose exec redis sh
|
||||
/data # redis-cli
|
||||
@@ -99,36 +109,48 @@ $ docker compose exec redis sh
|
||||
|
||||
#### 查看日志
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker compose logs -f
|
||||
```
|
||||
|
||||
#### 构建镜像
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker compose build
|
||||
```
|
||||
|
||||
#### 启动服务
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker compose start
|
||||
```
|
||||
|
||||
#### 运行一次性命令
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker compose run web python app.py
|
||||
```
|
||||
|
||||
#### 验证 `docker-compose.yml`
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker compose config
|
||||
```
|
||||
|
||||
#### 删除项目
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker compose down
|
||||
```
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
## Compose 命令说明
|
||||
|
||||
Docker Compose 提供了丰富的命令来管理项目和容器。本节将详细介绍这些命令的使用格式和常用选项。
|
||||
|
||||
### 命令对象与格式
|
||||
|
||||
对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。
|
||||
@@ -147,6 +149,7 @@ $ docker compose kill -s SIGINT
|
||||
* `-v` 删除容器所挂载的数据卷。
|
||||
|
||||
#### `run`
|
||||
|
||||
格式为 `docker compose run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]`。
|
||||
|
||||
在指定服务上执行一个命令。
|
||||
|
||||
@@ -204,6 +204,7 @@ env_file:
|
||||
|
||||
```bash
|
||||
## common.env: Set development environment
|
||||
|
||||
PROG_ENV=development
|
||||
```
|
||||
|
||||
@@ -568,6 +569,7 @@ db:
|
||||
|
||||
```bash
|
||||
## 支持 # 号注释
|
||||
|
||||
MONGO_VERSION=3.6
|
||||
```
|
||||
|
||||
|
||||
@@ -46,22 +46,29 @@ $ mkdir django-docker && cd django-docker
|
||||
|
||||
### Step 1: 创建 Dockerfile
|
||||
|
||||
具体内容如下:
|
||||
|
||||
```docker
|
||||
FROM python:3.12-slim
|
||||
|
||||
## 防止 Python 缓冲 stdout/stderr,让日志实时输出
|
||||
|
||||
ENV PYTHONUNBUFFERED=1
|
||||
|
||||
## 设置工作目录
|
||||
|
||||
WORKDIR /code
|
||||
|
||||
## 先复制依赖文件,利用 Docker 缓存加速构建
|
||||
|
||||
COPY requirements.txt /code/
|
||||
|
||||
## 安装依赖
|
||||
|
||||
RUN pip install --no-cache-dir -r requirements.txt
|
||||
|
||||
## 复制项目代码
|
||||
|
||||
COPY . /code/
|
||||
```
|
||||
|
||||
@@ -79,6 +86,8 @@ COPY . /code/
|
||||
|
||||
### Step 2: 创建 requirements.txt
|
||||
|
||||
具体内容如下:
|
||||
|
||||
```txt
|
||||
Django>=5.0,<6.0
|
||||
psycopg[binary]>=3.1,<4.0
|
||||
@@ -95,6 +104,8 @@ gunicorn>=21.0,<22.0
|
||||
|
||||
### Step 3: 创建 docker-compose.yml
|
||||
|
||||
Step 3: 创建 docker-compose.yml 配置如下:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
db:
|
||||
@@ -132,6 +143,8 @@ volumes:
|
||||
|
||||
#### db 服务
|
||||
|
||||
db 服务 配置如下:
|
||||
|
||||
```yaml
|
||||
db:
|
||||
image: postgres:16 # 使用官方 PostgreSQL 16 镜像
|
||||
@@ -150,6 +163,8 @@ db:
|
||||
|
||||
#### web 服务
|
||||
|
||||
web 服务 配置如下:
|
||||
|
||||
```yaml
|
||||
web:
|
||||
build: . # 从当前目录的 Dockerfile 构建
|
||||
@@ -222,6 +237,7 @@ DATABASES = {
|
||||
}
|
||||
|
||||
## 允许的主机(开发环境)
|
||||
|
||||
ALLOWED_HOSTS = ['*']
|
||||
```
|
||||
|
||||
@@ -231,6 +247,8 @@ ALLOWED_HOSTS = ['*']
|
||||
|
||||
### Step 6: 启动应用
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker compose up
|
||||
```
|
||||
@@ -255,15 +273,19 @@ web-1 | Starting development server at http://0.0.0.0:8000/
|
||||
|
||||
```bash
|
||||
## 执行数据库迁移
|
||||
|
||||
$ docker compose exec web python manage.py migrate
|
||||
|
||||
## 创建超级用户
|
||||
|
||||
$ docker compose exec web python manage.py createsuperuser
|
||||
|
||||
## 进入 Django shell
|
||||
|
||||
$ docker compose exec web python manage.py shell
|
||||
|
||||
## 进入 PostgreSQL 命令行
|
||||
|
||||
$ docker compose exec db psql -U django_user -d django_db
|
||||
```
|
||||
|
||||
@@ -285,6 +307,7 @@ $ docker compose exec db psql -U django_user -d django_db
|
||||
|
||||
```bash
|
||||
## 调试:检查数据库是否正常运行
|
||||
|
||||
$ docker compose ps
|
||||
$ docker compose logs db
|
||||
```
|
||||
@@ -299,8 +322,11 @@ $ docker compose logs db
|
||||
|
||||
#### Q3: 权限问题(Linux)
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
## 如果容器内创建的文件 root 用户所有
|
||||
|
||||
$ sudo chown -R $USER:$USER .
|
||||
```
|
||||
|
||||
@@ -320,6 +346,7 @@ $ sudo chown -R $USER:$USER .
|
||||
|
||||
```yaml
|
||||
## docker-compose.prod.yml
|
||||
|
||||
services:
|
||||
web:
|
||||
build: .
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
### 架构概览
|
||||
|
||||
具体内容如下:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ Docker Compose 网络 │
|
||||
@@ -37,23 +39,29 @@ $ mkdir rails-docker && cd rails-docker
|
||||
|
||||
### Step 1: 创建 Dockerfile
|
||||
|
||||
具体内容如下:
|
||||
|
||||
```docker
|
||||
FROM ruby:3.2
|
||||
|
||||
## 安装系统依赖
|
||||
|
||||
RUN apt-get update -qq && \
|
||||
apt-get install -y build-essential libpq-dev nodejs && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
## 设置工作目录
|
||||
|
||||
WORKDIR /myapp
|
||||
|
||||
## 先复制 Gemfile,利用缓存加速构建
|
||||
|
||||
COPY Gemfile /myapp/Gemfile
|
||||
COPY Gemfile.lock /myapp/Gemfile.lock
|
||||
RUN bundle install
|
||||
|
||||
## 复制应用代码
|
||||
|
||||
COPY . /myapp
|
||||
```
|
||||
|
||||
@@ -83,6 +91,8 @@ $ touch Gemfile.lock
|
||||
|
||||
### Step 3: 创建 docker-compose.yml
|
||||
|
||||
Step 3: 创建 docker-compose.yml 配置如下:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
db:
|
||||
@@ -176,6 +186,8 @@ production:
|
||||
|
||||
### Step 7: 启动应用
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
$ docker compose up
|
||||
```
|
||||
@@ -206,20 +218,27 @@ Created database 'myapp_test'
|
||||
|
||||
### 常用开发命令
|
||||
|
||||
运行以下命令:
|
||||
|
||||
```bash
|
||||
## 数据库迁移
|
||||
|
||||
$ docker compose exec web rails db:migrate
|
||||
|
||||
## Rails 控制台
|
||||
|
||||
$ docker compose exec web rails console
|
||||
|
||||
## 运行测试
|
||||
|
||||
$ docker compose exec web rails test
|
||||
|
||||
## 生成脚手架
|
||||
|
||||
$ docker compose exec web rails generate scaffold Post title:string body:text
|
||||
|
||||
## 进入容器 Shell
|
||||
|
||||
$ docker compose exec web bash
|
||||
```
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
## 实战 WordPress
|
||||
|
||||
### 简介
|
||||
|
||||
WordPress 是全球最流行的内容管理系统(CMS)。使用 Docker Compose 可以在几分钟内搭建一个包含数据库、Web 服务和持久化存储的生产级 WordPress 环境。
|
||||
|
||||
---
|
||||
|
||||
### 项目结构
|
||||
|
||||
具体内容如下:
|
||||
|
||||
```
|
||||
wordpress/
|
||||
├── docker-compose.yml
|
||||
@@ -77,7 +77,7 @@ networks:
|
||||
|
||||
### 配置文件详解
|
||||
|
||||
#### 1. 环境变量 (.env)
|
||||
#### 1. 环境变量(.env)
|
||||
|
||||
为了安全,不要在 `docker-compose.yml` 中直接写密码。创建 `.env` 文件:
|
||||
|
||||
@@ -135,6 +135,7 @@ $ docker compose logs -f
|
||||
|
||||
```bash
|
||||
## 导出 SQL
|
||||
|
||||
$ docker exec wordpress_db mysqldump -u wordpress -pwordpress wordpress > backup.sql
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user