mirror of
https://github.com/jaywcjlove/reference.git
synced 2025-08-22 14:06:14 +08:00
Compare commits
2 Commits
03874e30ea
...
5a4f7cdf37
Author | SHA1 | Date | |
---|---|---|---|
![]() |
5a4f7cdf37 | ||
![]() |
6687a0989a |
@@ -8,17 +8,17 @@ Docker Compose 备忘清单
|
||||
|
||||
### Docker Compose 是什么?
|
||||
|
||||
- `Docker-compsoe` 是一个开源项目,用于定义和运行多容器 `Docker` 应用程序的工具。由 `Docker` 社区维护。
|
||||
- 通过一个 `YAML` 文件来配置应用程序的服务,以便可以使用一个命令启动、停止和重启整个应用程序。
|
||||
- **Docker Compose** 是由 [Docker](./docker.md) 社区维护的开源工具,用于定义和运行多容器应用。
|
||||
- 通过单个 [YAML](./yaml.md) 文件配置服务,可用一条命令启动、停止或重启整个应用。
|
||||
- [Docker Compose 开源地址](https://github.com/docker/compose)
|
||||
- [Docker Compose 发行地址](https://github.com/docker/compose/releases) _github.com_
|
||||
|
||||
### 基本概念
|
||||
|
||||
- **服务 (services):** 一个服务指的是一个容器,即一个应用程序的一个实例。
|
||||
- **容器 (container):** `Docker` 容器,其中运行着应用程序的一个实例。
|
||||
- **镜像 (image):** `Docker` 镜像,用于创建容器的模板。
|
||||
- **Docker-Compose 文件:** 一个 `YAML` 文件,描述了应用程序的各个服务以及它们之间的关系、配置等信息。
|
||||
- **容器 (container):** [Docker](./docker.md) 容器,其中运行着应用程序的一个实例。
|
||||
- **镜像 (image):** [Docker](./docker.md) 镜像,用于创建容器的模板。
|
||||
- **Docker-Compose 文件:** 一个 [YAML](./yaml.md) 文件,描述了应用程序的各个服务以及它们之间的关系、配置等信息。
|
||||
|
||||
### Docker-Compose 文件结构
|
||||
|
||||
@@ -30,13 +30,12 @@ Docker Compose 备忘清单
|
||||
### 安装
|
||||
<!--rehype:wrap-class=row-span-2-->
|
||||
|
||||
Docker 20.10 之后,Docker CLI 支持 插件机制。Compose 也被官方迁移为 CLI 插件。
|
||||
|
||||
命令也尽量使用官方推荐的 `docker compose` (**中间用空格,没有横线**)。建议尽早迁移,如果旧项目需要兼容 `docker-compose`,可单独安装 `docker-compose-plugin` 插件,或者是用软链接。
|
||||
Docker 20.10 起,CLI 支持插件机制,官方已将 Compose 迁移为 CLI 插件。推荐使用 `docker compose`(空格,无横线),旧项目如需兼容 `docker-compose` 可安装 `docker-compose-plugin` 或使用软链接。
|
||||
|
||||
```bash
|
||||
sudo ln -s /usr/lib/docker/cli-plugins/docker-compose /usr/local/bin/docker-compose
|
||||
```
|
||||
<!--rehype:className=wrap-text-->
|
||||
|
||||
对于 Ubuntu 和 Debian,运行:
|
||||
|
||||
@@ -168,12 +167,13 @@ docker info --format '{{range .ClientInfo.Plugins}}{{if eq .Name "compose"}}{{.P
|
||||
```bash
|
||||
docker compose up -d --remove-orphans --pull always --force-recreate
|
||||
```
|
||||
|
||||
| 参数 | 说明|
|
||||
|-----|----|
|
||||
| -d / --detach | 后台运行容器。|
|
||||
| --remove-orphans | 删除孤儿容器和网络配置。|
|
||||
| --pull always | 每次启动前都从远程仓库拉取最新镜像,确保使用最新镜像,而不是本地缓存。还可以用--pull missing(只拉不存在的镜像)或 --pull never(不拉取)。|
|
||||
| --force-recreate | 强制重新创建容器,即使配置或镜像没有变化。|
|
||||
| `-d / --detach` | 后台运行容器。|
|
||||
| `--remove-orphans` | 删除孤儿容器和网络配置。|
|
||||
| `--pull always` | 每次启动前都从远程仓库拉取最新镜像,确保使用最新镜像,而不是本地缓存。还可以用--pull missing(只拉不存在的镜像)或 --pull never(不拉取)。|
|
||||
| `--force-recreate` | 强制重新创建容器,即使配置或镜像没有变化。|
|
||||
<!--rehype:className=left-align-->
|
||||
|
||||
Docker Compose 配置
|
||||
@@ -182,7 +182,8 @@ Docker Compose 配置
|
||||
### 示例配置文件
|
||||
<!--rehype:wrap-class=col-span-2-->
|
||||
|
||||
`docker-compose` 的配置文件是一个 `YAML` 文件,用于定义和运行多容器 Docker 应用程序。通常命名为 `docker-compose.yml` (现在新的版本建议实用 `compose.yaml` 代替之前的 `docker-compose.yaml`) ,它使用单一的 YAML 文件来定义多个容器的集合,以及它们之间的依赖关系和服务。以下是一份 `docker-compose.yml` 文件的配置模板,包含了常用配置项和解释:
|
||||
`docker-compose` 使用 [YAML](./yaml.md) 文件定义和运行多容器应用,通常命名为 `docker-compose.yml`(新版本建议用 `compose.yaml`)。
|
||||
该文件集中描述多个容器的服务、依赖关系等。下面是一个包含常用配置项和说明的模板:
|
||||
|
||||
```yml
|
||||
name: myapp
|
||||
|
@@ -1397,6 +1397,7 @@ Yoki.sound() # => Woof!
|
||||
### 属性封装与访问控制
|
||||
|
||||
实现计算属性、只读属性和验证逻辑。
|
||||
|
||||
```python
|
||||
class Person:
|
||||
def __init__(self, age):
|
||||
@@ -1840,9 +1841,11 @@ else: # try/except 块的可选子句。 必须遵循除块
|
||||
finally: # 在所有情况下执行
|
||||
print("我们可以在这里清理资源")
|
||||
```
|
||||
|
||||
### 高阶函数map
|
||||
|
||||
将一个函数应用到可迭代对象(如列表)的每个元素上,并返回一个新的迭代器。
|
||||
|
||||
```python
|
||||
def square(x):
|
||||
return x ** 2
|
||||
@@ -1858,6 +1861,7 @@ print(list(result)) # 输出: [1, 4, 9, 16]
|
||||
### 高阶函数sorted
|
||||
|
||||
对可迭代对象进行排序,返回一个新的已排序列表(原对象不变)
|
||||
|
||||
```python
|
||||
# 按照分数排序
|
||||
users = [
|
||||
@@ -1883,6 +1887,7 @@ for user in sorted_users:
|
||||
### 高阶函数reduce
|
||||
|
||||
将一个二元函数(接受两个参数的函数)累积应用到可迭代对象的元素上,最终合并为单个值
|
||||
|
||||
```python
|
||||
from functools import reduce
|
||||
|
||||
@@ -1896,9 +1901,11 @@ result = reduce(multiply, numbers)
|
||||
|
||||
print(result) # 输出: 120(2×3×4×5=120)
|
||||
```
|
||||
|
||||
### 偏函数
|
||||
|
||||
固定原函数的某些参数,生成新函数
|
||||
|
||||
```python
|
||||
from functools import partial
|
||||
|
||||
@@ -1914,7 +1921,6 @@ print(square(5)) # 输出: 25 (5²)
|
||||
print(square(10)) # 输出: 100 (10²)
|
||||
```
|
||||
|
||||
|
||||
### pyenv & pipenv
|
||||
<!--rehype:wrap-class=col-span-3-->
|
||||
|
||||
|
@@ -296,7 +296,6 @@ $ ssh -L 4000:192.168.1.10:80 user@example.com -N
|
||||
|
||||
其中 `-N` 表示不执行远程命令,只是建立隧道。
|
||||
|
||||
|
||||
### 远程端口转发
|
||||
<!--rehype:wrap-class=col-span-3-->
|
||||
|
||||
|
@@ -2027,12 +2027,11 @@ print(intStorage.retrieve() ?? "Empty")
|
||||
`swift-inspect` | 模块/符号分析工具 | 检查模块结构/调试工具输出
|
||||
<!--rehype:className=show-header left-align-->
|
||||
|
||||
|
||||
### swift — 脚本执行 & REPL
|
||||
<!--rehype:wrap-class=row-span-3-->
|
||||
|
||||
命令 | 说明
|
||||
:-- | :--
|
||||
:-- | :--
|
||||
`swift` | 启动交互式环境(REPL)
|
||||
`swift my_script.swift` | 运行 Swift 脚本文件
|
||||
`swift build` | 使用 SwiftPM 编译项目
|
||||
@@ -2068,7 +2067,7 @@ $ swift package dump-package
|
||||
<!--rehype:wrap-class=col-span-2-->
|
||||
|
||||
命令 | 说明
|
||||
:-- | :--
|
||||
:-- | :--
|
||||
`swiftc main.swift` | 编译为默认名 `main` 的可执行文件
|
||||
`swiftc main.swift -o myapp` | 编译为 `myapp` 可执行文件
|
||||
`swiftc -c Foo.swift` | 编译为中间的 `.o` 文件
|
||||
@@ -2080,12 +2079,11 @@ $ swift package dump-package
|
||||
`swiftc -emit-object Foo.swift` | 输出目标文件 `.o`
|
||||
<!--rehype:className=show-header left-align-->
|
||||
|
||||
|
||||
### swift-inspect
|
||||
<!--rehype:wrap-class=col-span-2-->
|
||||
|
||||
命令 | 说明
|
||||
:-- | :--
|
||||
:-- | :--
|
||||
`swift-inspect MyApp` | 分析一个编译产物(如 `.app`、`.dylib`)
|
||||
`swift-inspect --symbols MyModule.swiftmodule` | 查看模块的符号信息
|
||||
`swift-inspect --help` | 查看所有可用选项
|
||||
|
@@ -292,14 +292,14 @@ ClipboardSetText("text")
|
||||
### Windows 打包
|
||||
<!--rehype:wrap-class=col-span-2 row-span-2-->
|
||||
|
||||
#### <red>■</red> 默认生成: `.exe` 可执行文件。
|
||||
#### <red>■</red> 默认生成: `.exe` 可执行文件
|
||||
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||
|
||||
```bash
|
||||
$ wails build -platform windows/amd64
|
||||
```
|
||||
|
||||
#### <red>■</red> 生成 NSIS 安装程序:
|
||||
#### <red>■</red> 生成 NSIS 安装程序
|
||||
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||
|
||||
**前提条件**: 需要预先安装 [NSIS (Nullsoft Scriptable Install System)](https://nsis.sourceforge.io/Download)。
|
||||
@@ -320,7 +320,7 @@ $ wails build -platform windows/amd64
|
||||
$ wails build -platform windows/amd64 -nsis
|
||||
```
|
||||
|
||||
#### <red>■</red> 处理 WebView2 依赖:
|
||||
#### <red>■</red> 处理 WebView2 依赖
|
||||
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||
|
||||
`download`: 提示用户下载 WebView2。
|
||||
@@ -328,11 +328,13 @@ $ wails build -platform windows/amd64 -nsis
|
||||
```bash
|
||||
$ wails build -platform windows/amd64 -webview2 download
|
||||
```
|
||||
|
||||
`embed`: 将 WebView2 嵌入到应用中(推荐)。
|
||||
|
||||
```bash
|
||||
$ wails build -platform windows/amd64 -webview2 embed
|
||||
```
|
||||
|
||||
`browser`: 在浏览器中打开下载页面。
|
||||
|
||||
```bash
|
||||
@@ -341,20 +343,19 @@ $ wails build -platform windows/amd64 -webview2 browser
|
||||
|
||||
### macOS 打包
|
||||
|
||||
|
||||
#### <red>■</red> 默认生成: `.app` 应用程序包。
|
||||
#### <red>■</red> 默认生成: `.app` 应用程序包
|
||||
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||
|
||||
```bash
|
||||
$ wails build -platform darwin/amd64
|
||||
```
|
||||
|
||||
#### <red>■</red> 代码签名与公证:
|
||||
#### <red>■</red> 代码签名与公证
|
||||
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||
|
||||
需要通过 Apple 开发者账户进行 **代码签名** 和 **公证** 才能分发。
|
||||
|
||||
#### <red>■</red> 跳过打包成 `.app` 步骤:
|
||||
#### <red>■</red> 跳过打包成 `.app` 步骤
|
||||
<!--rehype:style=text-align: left;font-weight: bold;-->
|
||||
|
||||
```bash
|
||||
@@ -389,7 +390,7 @@ $ wails build -platform linux/amd64 -rpm
|
||||
|
||||
#### AppImage 支持
|
||||
|
||||
Wails 不直接内置对 AppImage 的支持,但可以使用外部工具手动创建。使用 `appimagetool`:
|
||||
Wails 不直接内置对 AppImage 的支持,但可以使用外部工具手动创建。使用 `appimagetool`:
|
||||
|
||||
```shell
|
||||
appimagetool ./your-app-dir
|
||||
@@ -474,7 +475,6 @@ func (a *App) LongRunningTask(ctx context.Context) error {
|
||||
- **Go 部分**: 使用 `wails dev -debug` 启动并附加您的 Go 调试器。
|
||||
- **前端部分**: 在 `wails dev` 模式下,右键点击应用,选择“检查”打开浏览器开发者工具。
|
||||
|
||||
|
||||
### 性能优化
|
||||
|
||||
#### 构建优化
|
||||
@@ -528,7 +528,6 @@ $ wails dev
|
||||
$ wails dev -frontenddevserverurl http://localhost:3000
|
||||
```
|
||||
|
||||
|
||||
参考资料
|
||||
---
|
||||
|
||||
|
Reference in New Issue
Block a user