前言

非常感谢我不是咕咕鸽大神,从他的博客和视频教程中学到了很多关于vps和docker建站的知识,在学习搭建的时候做了下笔记,方便下次使用。下面整理汇总的docker项目大多是他推荐和分享的,汇总的是搭建网站过程中最关键的docker命令或者docker-compose文件,并非适合小白直接使用,小白可以先去大佬的博客学习下基础知识。大佬博客地址:https://blog.laoda.de/

安装docker和docker-compose

安装docker

官方地址:https://docs.docker.com/engine/install/debian/

非大陆服务器安装docker

1
2
3
wget -qO- get.docker.com | bash
docker -v # 查看docker版本
systemctl enable docker #设置开机自启动

注意:如果出现sudo:unable to resolve host [hostname],可以编辑nano/etc/hosts。然后在localhost后面空一格,打上[hostname]你对应的hostname内容。

国内服务器安装docker

1
2
3
curl -sSL https://get.daocloud.io/docker | sh
docker -v #查看docker版本
systemctl enable docker # 设置开机自动启动

卸载docker

1
2
3
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

安Dockercompose

非大陆服务器安装docker-compose

1
2
3
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version #查看docker-compose版本

国内服务器安装docker-compose

1
2
3
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.1.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version #查看docker-compose版本

docker项目的更新与卸载

docker命令安装

停止和卸载:

1
2
3
4
5
docker ps  # 确定哪些docker项目在运行
docker inspect 容器的名字 # 找出你容器的映射到本地的文件路径
docker stop memos
docker rm -f memos # 停止容器,此时不会删除映射到本地的数据
rm -rf /root/data/docker_data/memos # 完全删除映射到本地的数据

docker-compose安装

停止和卸载:

1
2
3
cd /root/data/docker_data/lsky-pro  # 进入docker-compose所在的文件夹
docker-compose down # 停止容器,此时不会删除映射到本地的数据
rm -rf /root/data/docker_data/lsky-pro # 完全删除映射到本地的数据

更新:

1
2
3
cd /root/data/docker_data/lsky-pro  # 进入docker-compose所在的文件夹
docker-compose pull # 拉取最新的镜像
docker-compose up -d # 重新更新当前镜像

其他

修改docker配置

以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘。

1
2
3
4
5
6
7
8
9
10
11
12
13
cat > /etc/docker/daemon.json <<EOF
{
"log-driver": "json-file",
"log-opts": {
"max-size": "20m",
"max-file": "3"
},
"ipv6": true,
"fixed-cidr-v6": "fd00:dead:beef:c0::/80",
"experimental":true,
"ip6tables":true
}
EOF

重启Docker服务

1
systemctl restart docker

docker项目管理

所有的docker项目放到一个文件夹下,这样如果换服务器或者想要备份,都会很方便。

1
mkdir -p data/docker_data

查看docker容器内部ip

npm和其它项目都在同一个服务器的时候,代理目标可以使用容器内部ip

1
ip addr show docker0

docker命令转docker-compose文件格式

网址:https://www.composerize.com/

github地址:https://github.com/magicmark/composerize

docker项目的三个主要步骤

  1. 运行docker命令或者docker-compose,一般此时网站可以使用ip+端口号访问
  2. 使用npm给网站做反向代理,添加ssl证书,可以安全访问网站
  3. 根据具体项目做具体操作

以下所有项目的安装主要提供项目的docker命令行代码和docker-compose代码

安装Nginx Proxy Manage

官网:https://nginxproxymanager.com/

创建npm文件夹

1
mkdir -p data/docker_data/npm

在npm文件夹下创建docker-compose.yml文件

1
touch docker-compose.yml

打开docker-compose.yml文件,粘贴以下代码

1
2
3
4
5
6
7
8
9
10
11
12
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # 不建议修改端口
- '81:81' # 可以把冒号左边的81端口修改成你服务器上没有被占用的端口
- '443:443' # 不建议修改端口
volumes:
- ./data:/data # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个data目录,用于存放数据,如果不存在的话,会自动创建
- ./letsencrypt:/etc/letsencrypt # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个letsencrypt目录,用于存放证书,如果不存在的话,会自动创建

运行docker-compose

1
docker-compose up -d

默认登录名和密码

1
2
Email:    admin@example.com
Password: changeme

安装兰空图床

在dGitHub原项目地址:https://github.com/lsky-org/lsky-pro(2.3k star)

官网地址:https://www.lsky.pro/

文档地址:https://docs.lsky.pro/

Docker镜像地址:https://hub.docker.com/r/dko0/lsky-pro

PicGo插件:lankong:https://hellodk.cn/post/964

docker项目下创建docker-compose.yml

1
2
3
mkdir -p /root/data/docker_data/lsky-pro
cd /root/data/docker_data/lsky-pro
touch docker-compose.yml

docker-compose.yml填入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
version: '3'
services:
lsky-pro:
container_name: lsky-pro
image: dko0/lsky-pro
restart: always
volumes:
- /root/data/docker_data/lsky-pro/lsky-pro-data:/var/www/html #映射到本地
ports:
- 7791:80
environment:
- MYSQL_HOST=mysql
- MYSQL_DATABASE=lsky-pro
- MYSQL_USER=lsky-pro
- MYSQL_PASSWORD=lsky-pro

mysql:
image: mysql:8.0
container_name: lsky-pro-db
restart: always
environment:
- MYSQL_DATABASE=lsky-pro
- MYSQL_USER=lsky-pro
- MYSQL_PASSWORD=lsky-pro
- MYSQL_ROOT_PASSWORD=lsky-pro
volumes:
- /root/data/docker_data/lsky-pro/db:/var/lib/mysql

数据库密码可以更改,改了就要记住。后面安装图床时需要用到上面的内容。

运行docker-compose

1
docker-compose up -d 

访问网页

浏览器地址栏输入ip:7791

更新docker-compose项目

1
2
3
4
5
cp -r /root/data/docker_data/lsky-pro/lsky-pro-data /root/data/docker_data/lsky-pro/lsky-pro-data.archive  # 万事先备份,以防万一
cp -r /root/data/docker_data/lsky-pro/db /root/data/docker_data/lsky-pro/db.archive #数据库也备份一下
cd /root/data/docker_data/lsky-pro # 进入docker-compose所在的文件夹
docker-compose pull # 拉取最新的镜像
docker-compose up -d # 重新更新当前镜像

卸载docker-compose项目

1
2
3
cd /root/data/docker_data/lsky-pro  # 进入docker-compose所在的文件夹
docker-compose down # 停止容器,此时不会删除映射到本地的数据
rm -rf /root/data/docker_data/lsky-pro # 完全删除映射到本地的数据

安装easyimage图床

GitHub原项目地址:https://github.com/icret/EasyImages2.0

Docker镜像:https://hub.docker.com/r/ddsderek/easyimage

docker-compose文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3.3'
services:
easyimage:
image: ddsderek/easyimage:latest
container_name: easyimage
ports:
- '8080:80'
environment:
- TZ=Asia/Shanghai
- PUID=1000
- PGID=1000
volumes:
- '/root/data/docker_data/easyimage/config:/app/web/config'
- '/root/data/docker_data/easyimage/i:/app/web/i'
restart: unless-stopped

注意事项

网页出现格式混乱

修改/root/data/docker_data/easyimage/config/config.php里面的内容

把domain和imgurl后面的url改成自己的域名

确保是https

  1. 使用npm反向代理的过程,千万不要勾选Block Common Exploits,否则上传图片得缩率图会无法显示。
  2. 反向代理后一定要修改,easyimg项目下得config.php文件,把domainimgurl后面的url换成反代的域名。

配置picgo

配置picgo

  1. 自定义body:{“token”:”8337effca0ddfcd9c5899f3509b23657”}
  2. api地址:https:\域名\indext.php
  3. post参数名:image
  4. json路径:url

安装bitwarden密码管理工具

github项目地址:https://github.com/dani-garcia/vaultwarden

docker命令行

1
2
3
4
5
6
7
docker run -d --name bitwardenrs \
--restart unless-stopped \
-e WEBSOCKET_ENABLED=true \
-v /root/data/docker_data/bitwarden/:/data/ \
-p 6666:80 \
-p 3012:3012 \
vaultwarden/server:latest

禁止新用户注册

1
2
3
4
5
6
7
8
9
10
docker stop bitwardenrs  #停止容器
docker rm -f bitwardenrs #删除容器
docker run -d --name bitwardenrs \
--restart unless-stopped \
-e SIGNUPS_ALLOWED=false \
-e WEBSOCKET_ENABLED=true \
-v /root/data/docker_data/bitwarden/:/data/ \
-p 6666:80 \
-p 3012:3012 \
vaultwarden/server:latest

安装rustdesk

GitHub原项目地址:https://github.com/rustdesk/rustdesk

Docker镜像地址:https://hub.docker.com/r/rustdesk/rustdesk-server/tags

官网地址:https://rustdesk.com

文档地址:https://rustdesk.com/docs/zh-cn/self-host/

docker-compose代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
version: '3'

networks:
rustdesk-net:
external: false

services:
hbbs:
container_name: hbbs
ports:
- 21115:21115
- 21116:21116
- 21116:21116/udp
- 21118:21118
image: rustdesk/rustdesk-server:latest
command: hbbs -r hbbs.example.com:21117 # hbbs.example.com改成
volumes:
- ./hbbs:/root
networks:
- rustdesk-net
depends_on:
- hbbr
restart: unless-stopped

hbbr:
container_name: hbbr
ports:
- 21117:21117
- 21119:21119
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./hbbr:/root
networks:
- rustdesk-net
restart: unless-stopped

安装wallabag

GitHub原项目地址:https://github.com/wallabag/wallabag

官网地址:https://wallabag.org/

官方文档地址:https://doc.wallabag.org/en/admin/installation/requirements.html

官方镜像:https://hub.docker.com/r/wallabag/wallabag

docker-compose文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
version: '3'
services:
wallabag:
image: wallabag/wallabag
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=wallaroot
- SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql
- SYMFONY__ENV__DATABASE_HOST=db
- SYMFONY__ENV__DATABASE_PORT=3306
- SYMFONY__ENV__DATABASE_NAME=wallabag
- SYMFONY__ENV__DATABASE_USER=wallabag
- SYMFONY__ENV__DATABASE_PASSWORD=wallapass
- SYMFONY__ENV__DATABASE_CHARSET=utf8mb4
- SYMFONY__ENV__MAILER_HOST=127.0.0.1
- SYMFONY__ENV__MAILER_USER=~
- SYMFONY__ENV__MAILER_PASSWORD=~
- SYMFONY__ENV__FROM_EMAIL=email@lyr.im # 修改成你自己的邮箱
- SYMFONY__ENV__DOMAIN_NAME=https://wallabag.laoda.de # 修改成稍后要反向代理的域名
- SYMFONY__ENV__SERVER_NAME="Roy's Wallabag"
ports:
- 8080:80 # 8080可以修改成其他的自己想用的端口
volumes:
- /root/data/docker_data/wallabag/images:/var/www/wallabag/web/assets/images # 将图片映射挂载到本地,这样docker停止了,数据不会丢失
healthcheck:
test: ["CMD", "wget" ,"--no-verbose", "--tries=1", "--spider", "http://localhost"]
interval: 1m
timeout: 3s
depends_on:
- db
- redis
db:
image: mariadb
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=wallaroot
volumes:
- /root/data/docker_data/wallabag/data:/var/lib/mysql # 将数据映射挂载到本地,这样docker停止了,数据不会丢失
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
interval: 20s
timeout: 3s
redis:
image: redis:alpine
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 20s
timeout: 3s

使用说明

安装Zfile

文档地址:https://docs.zfile.vip

社区地址:https://bbs.zfile.vip

项目源码: https://github.com/zhaojun1998/zfile

项目源码:https://github.com/zhaojun1998/zfile

前端源码:https://github.com/zhaojun1998/zfile-vue

dockercompose文件

1
2
3
4
5
6
7
8
9
10
11
12
version: '3.3'
services:
zfile:
container_name: zfile
restart: always
ports:
- '8080:8080' # 左边的端口可以修改,右边的端口不要修改
volumes:
- './db:/root/.zfile-v4/db' # 数据库映射到当前文件夹下的db目录
- './logs:/root/.zfile-v4/logs' # 日志文件映射到当前文件夹下的logs目录
- './data:/root/.zfile-v4/data' # 额外映射了一个data目录,等下本地存储我们就可以填/root/.zfile-v4/data目录啦
image: zhaojun1998/zfile

安装为知笔记

参考这个:https://breakthewa11.com/archives/docker-install-minimalist.html

docker命令

1
docker run --name wiz --restart=always -it -d -v  ~/data/docker_data/wizdata:/wiz/storage -v  /etc/localtime:/etc/localtime -p 8123:80 -p 9269:9269/udp  wiznote/wizserver

更新

1
2
3
4
docker stop wiz
docker rm wiz
docker pull wiznote/wizserver:latest
docker run --name wiz --restart=always -it -d -v ~/data/docker_data/wizdata:/wiz/storage -v /etc/localtime:/etc/localtime -p 8123:80 -p 9269:9269/udp wiznote/wizserver

卸载

1
2
3
docker stop wiz
docker rm -f wiz
rm -rf ~/data/docker_data/wizdata

安装TTRSS订阅服务

参考这个:https://ttrss.henry.wang/zh/#%E5%85%B3%E4%BA%8E

docker-compose文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
version: "3"
services:
service.rss:
image: wangqiru/ttrss:latest
container_name: ttrss
ports:
- 181:80
environment:
- SELF_URL_PATH=http://localhost:181/ # please change to your own domain
- DB_PASS=ttrss # use the same password defined in `database.postgres`
- PUID=1000
- PGID=1000
volumes:
- feed-icons:/var/www/feed-icons/
networks:
- public_access
- service_only
- database_only
stdin_open: true
tty: true
restart: always

service.mercury: # set Mercury Parser API endpoint to `service.mercury:3000` on TTRSS plugin setting page
image: wangqiru/mercury-parser-api:latest
container_name: mercury
networks:
- public_access
- service_only
restart: always

service.opencc: # set OpenCC API endpoint to `service.opencc:3000` on TTRSS plugin setting page
image: wangqiru/opencc-api-server:latest
container_name: opencc
environment:
- NODE_ENV=production
networks:
- service_only
restart: always

database.postgres:
image: postgres:13-alpine
container_name: postgres
environment:
- POSTGRES_PASSWORD=ttrss # feel free to change the password
volumes:
- ~/data/docker_data/data:/var/lib/postgresql/data # persist postgres data to ~/postgres/data/ on the host
networks:
- database_only
restart: always

# utility.watchtower:
# container_name: watchtower
# image: containrrr/watchtower:latest
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock
# environment:
# - WATCHTOWER_CLEANUP=true
# - WATCHTOWER_POLL_INTERVAL=86400
# restart: always

volumes:
feed-icons:

networks:
public_access: # Provide the access for ttrss UI
service_only: # Provide the communication network between services only
internal: true
database_only: # Provide the communication between ttrss and database only
internal: true

安装joplin cloud

GitHub原项目地址:https://github.com/laurent22/joplin

Docker镜像地址:https://hub.docker.com/r/joplin/server

官网地址:https://joplinapp.org/

docker-compose文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# This is a sample docker-compose file that can be used to run Joplin Server
# along with a PostgreSQL server.
#
# Update the following fields in the stanza below:
#
# POSTGRES_USER
# POSTGRES_PASSWORD
# APP_BASE_URL
#
# APP_BASE_URL: This is the base public URL where the service will be running.
# - If Joplin Server needs to be accessible over the internet, configure APP_BASE_URL as follows: https://example.com/joplin.
# - If Joplin Server does not need to be accessible over the internet, set the the APP_BASE_URL to your server's hostname.
# For Example: http://[hostname]:22300. The base URL can include the port.
# APP_PORT: The local port on which the Docker container will listen.
# - This would typically be mapped to port to 443 (TLS) with a reverse proxy.
# - If Joplin Server does not need to be accessible over the internet, the port can be mapped to 22300.

version: '3'

services:
db:
image: postgres:13
volumes:
- ./data/postgres:/var/lib/postgresql/data
ports:
- "5432:5432" # 左边的端口可以更换,右边不要动!
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=changeme # 改成你自己的密码
- POSTGRES_USER=username # 改成你自己的用户名
- POSTGRES_DB=joplin
app:
image: joplin/server:latest
depends_on:
- db
ports:
- "22300:22300" # 左边的端口可以更换,右边不要动!
restart: unless-stopped
environment:
- APP_PORT=22300
- APP_BASE_URL=https://your.domain.com # 改成反代的域名
- DB_CLIENT=pg
- POSTGRES_PASSWORD=changeme # 与上面的密码对应!
- POSTGRES_DATABASE=joplin
- POSTGRES_USER=username # 与上面的用户名对应!
- POSTGRES_PORT=5432 # 与上面右边的对应!
- POSTGRES_HOST=db

更新

1
2
3
4
cp -r /root/data/docker_data/joplin /root/data/docker_data/joplin.archive  # 万事先备份,以防万一
cd /root/data/docker_data/joplin # 进入docker-compose所在的文件夹
docker-compose pull # 拉取最新的镜像
docker-compose up -d # 重新更新当前镜像

卸载

1
2
3
cd /root/data/docker_data/joplin  # 进入docker-compose所在的文件夹
docker-compose down # 停止容器,此时不会删除映射到本地的数据
rm -rf /root/data/docker_data/joplin # 完全删除映射到本地的数据

安装qBIttorrent

https://github.com/linuxserver/docker-qbittorrent

拉取镜像

1
docker pull linuxserver/qbittorrent

docker-compose文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: "2"
services:
qbittorrent:
image: linuxserver/qbittorrent:4.4.1
container_name: qbittorrent
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai # 你的时区
- UMASK_SET=022
- WEBUI_PORT=8081 # 将此处修改成你欲使用的 WEB 管理平台端口
volumes:
- /root/data/docker_data/qBittorrent/config:/config
- /root/data/docker_data/qBittorrent/downloads:/downloads
ports:
# 要使用的映射下载端口与内部下载端口,可保持默认,安装完成后在管理页面仍然可以改成其他端口。
- 6881:6881
- 6881:6881/udp
# 此处WEB UI 目标端口与内部端口务必保证相同,见问题1
- 8081:8081
restart: unless-stopped
network_mode: bridge # 网络模式选择刚才配置的桥接 bridge

默认登录用户名:admin

密码:adminadmin

博客搭建——typecho

创建安装目录

1
2
mkdir -p /root/data/docker_data/typecho
cd /root/data/docker_data/typecho

创建三个文件

myseq文件

1
2
cd /root/data/docker_data/typecho
touch mysql.env

填入以下内容

1
2
3
4
MYSQL_ROOT_PASSWORD=root_pass
MYSQL_DATABASE=typecho
MYSQL_USER=username
MYSQL_PASSWORD=password

数据库用户名和密码可以自己改动

php-fpm

1
2
3
4
cd /root/data/docker_data/typecho
mkdir php
cd php
touch Dockerfile

填入以下内容

1
2
3
4
5
FROM php:7.3.29-fpm
RUN apt-get update \
&& docker-php-ext-install pdo_mysql \
&& echo "output_buffering = 4096" > /usr/local/etc/php/conf.d/php.ini \
&& echo "date.timezone = PRC" >> /usr/local/etc/php/conf.d/php.ini

nginx

1
2
3
4
cd /root/data/docker_data/typecho
mkdir nginx
cd nginx
touch default.conf

填入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server {
listen 80 default_server;
root /var/www/html;
index index.php;

access_log /var/log/nginx/typecho_access.log main;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php$1 last;
}
location / {
index index.html index.htm index.php;

if (!-e $request_filename) {
rewrite . /index.php last;
}
}

location ~ \.php(.*)$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

下载源码

1
2
3
4
cd /root/data/docker_data/typecho/typecho
wget https://github.com/typecho/typecho/releases/download/v1.2.0/typecho.zip
apt install zip -y
unzip typecho.zip

docker-compose文件

1
2
cd /root/data/docker_data/typecho
nano docker-compose.yml

填入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
version: "3"

services:
nginx:
image: nginx
ports:
- "8223:80" # 左边可以改成任意没使用的端口
restart: always
environment:
- TZ=Asia/Shanghai
volumes:
- ./typecho:/var/www/html
- ./nginx:/etc/nginx/conf.d
- ./logs:/var/log/nginx
depends_on:
- php
networks:
- web

php:
build: php
restart: always
expose:
- "9000" # 不暴露公网,故没有写9000:9000
volumes:
- ./typecho:/var/www/html
environment:
- TZ=Asia/Shanghai
depends_on:
- mysql
networks:
- web

mysql:
image: mysql:5.7
restart: always
environment:
- TZ=Asia/Shanghai
expose:
- "3306" # 不暴露公网,故没有写3306:3306
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/logs:/var/log/mysql
- ./mysql/conf:/etc/mysql/conf.d
env_file:
- mysql.env
networks:
- web

networks:
web:

更新

1
2
3
cd /root/data/docker_data/typecho  # 进入docker-compose所在的文件夹
docker-compose pull # 拉取最新的镜像
docker-compose up -d # 重新更新当前镜像

卸载

1
2
3
4
5
sudo -i  # 切换到root
cd /root/data/docker_data/typecho # 进入docker-compose所在的文件夹
docker-compose down # 停止容器,此时不会删除映射到本地的数据
cd ~
rm -rf /root/data/docker_data/typecho # 完全删除映射到本地的数据

博客搭建——wordpress

创建安装目录

1
2
3
mkdir -p /root/data/docker_data/wordpress
cd /root/data/docker_data/wordpress
touch docker-compose.yml

解决上传文件大小限制

默认php设置的上传文件大小为2M,我们需要调整一下。参考:https://github.com/docker-library/wordpress/issues/375

1
2
cd /root/data/docker_data/wordpress
touch uploads.ini

输入下面的内容:

1
2
3
file_uploads = On
upload_max_filesize = 256M #可以自己设置大小
post_max_size = 256M #可以自己设置大小

docker-compose文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
version: '3.1'

services:

wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- /root/data/docker_data/wordpress/data:/var/www/html
- /root/data/docker_data/wordpress/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini

db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- /root/data/docker_data/wordpress/db:/var/lib/mysql

#volumes:
# wordpress:
# db:

查看上传文件的限制是否修改

1
docker exec 你的wp容器id php -i | grep upload

可以使用docker ps查看wp容器id

出现“因为我们不能复制一些文件,升级未被安装,这通常是因为存在不一致的文件权限”的错误

1
2
3
4
cd /root/data/docker_data/wordpress/data
chmod -R 777 wp-content
docker-compose down
docker-compose up -d

上传主题,出现“您点击的链接已过期”

1
2
cd /root/data/docker_data/wordpress/data
vim .htaccess

在.htaccess最后面加上:

1
2
3
4
5
php_value max_execution_time 300
php_value upload_max_filesize 256M
php_value post_max_size 256M
php_value memory_limit 128M
php_value max_input_vars 5000

更新

1
2
3
cd /root/data/docker_data/wordpress  # 进入docker-compose所在的文件夹
docker-compose pull # 拉取最新的镜像
docker-compose up -d # 重新更新当前镜像

卸载

1
2
3
4
5
sudo -i  # 切换到root
cd /root/data/docker_data/wordpress # 进入docker-compose所在的文件夹
docker-compose down # 停止容器,此时不会删除映射到本地的数据
cd ~
rm -rf /root/data/docker_data/wordpress # 完全删除映射到本地的数据

博客搭建——Halo 2.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
version: "3"

services:
halo:
image: halohub/halo:2.3.1
container_name: halo
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./:/root/.halo2
ports:
- "8090:8090"
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=o#DwN&JSa56
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
# 初始化的超级管理员用户名
- --halo.security.initializer.superadminusername=admin
# 初始化的超级管理员密码
- --halo.security.initializer.superadminpassword=P@88w0rd

halodb:
image: mysql:8.0.31
container_name: halodb
restart: on-failure:3
networks:
halo_network:
command:
- --default-authentication-plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
ports:
- "3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
- MYSQL_ROOT_PASSWORD=o#DwN&JSa56
- MYSQL_DATABASE=halo

networks:
halo_network:

安装Drawio绘图工具

1
docker run -itd --restart=always  --name="draw" -p 8083:8080 -p 8445:8443 jgraph/drawio 

安装Snapdrop文件传输工具

docker命令

1
docker run -d -p 8080:80 linuxserver/snapdrop

docker-compose

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: "2.4"
services:
snapdrop:
image: linuxserver/snapdrop:latest
container_name: snapdrop
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Shanghai
volumes:
- /root/container/snapdrop:/config
ports:
- 80:80
restart: always

注意:

  1. 使用nginx proxy manage反向代理时,必须勾选websockets support,否则会出现移动端和pc端一直连不上的情况Connection lost. Retry in 5 seconds...。
  2. snapdrop服务必须是反向代理所在的服务器
  3. 有问题多使用docker-compose restart重启服务

必须勾选支持websockets

安装web端SSh工具

docker-compose文件

1
2
3
4
5
6
7
8
9
10
11
12
version: '3.3'
services:
ywsjwebssh: #服务名,可以自定义
container_name: ywsjwebssh #容器名,可以自定义
ports:
- '2222:5032' # 2222可以改成任意vps上未使用过的端口,5032不要改
environment:
- PUID=0 # 稍后在终端输入id可以查看当前用户的id
- PGID=0 # 同上
- TZ=Asia/Shanghai #时区,可以自定义
restart: always #开启开机自启动
image: jrohy/webssh #镜像名不要改

安装freenom域名自动续期程序

docker-compose文件

1
2
3
4
5
6
7
8
9
version: '3.3'
services:
freenom:
container_name: freenom
restart: always
volumes:
- .:/conf
- ./logs:/app/logs
image: luolongfei/freenom

修改.env文件。以qq邮箱为例

修改.env文件

开启smtp服务

安装mdnice微信公众号排版工具

docker-compose文件

1
2
3
4
5
6
7
version: '3.3'
services:
mdnice:
container_name: mdnice
ports:
- '9000:80'
image: weihanli/mdnice

来源:https://blog.csdn.net/sD7O95O/article/details/115713045

类似知乎的开源问答平台——Answer

Answer 官方网址https://answer.dev/
Answer 官方 GitHubhttps://github.com/answerdev/answer
Answer 官方文档https://answer.dev/docs/installation/

docker-compose文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
version: "3"
services:
answer:
image: answerdev/answer
ports:
- '9008:80' # 冒号左边可以改成自己服务器未被占用的端口
restart: on-failure
volumes:
- ./answer-data:/data # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 answer-data 文件夹中

db:
image: mariadb:10
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: answer # 数据库用户root的密码,建议自行修改一个
MYSQL_USER: answer
MYSQL_PASSWORD: answer # 数据库用户answer的密码,建议自行修改一个
MYSQL_DATABASE: answer
volumes:
- ./mariadb:/var/lib/mysql # 冒号左边可以改路径,现在是表示把数据存放在在当前文件夹下的 mariadb 文件夹中
restart: on-failure

更新answer

1
2
3
4
5
6
7
8
9
10
11
cd /root/data/docker_data/answer

docker-compose down

cp -r /root/data/docker_data/answer/root/data/docker_data/hexo.archive # 万事先备份,以防万一,其实这边没必要,因为我们没有映射到本地文件夹

docker-compose pull

docker-compose up -d # 请不要使用 docker-compose stop 来停止容器,因为这么做需要额外的时间等待容器停止;docker-compose up -d 直接升级容器时会自动停止并立刻重建新的容器,完全没有必要浪费那些时间。

docker image prune # prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像

卸载answer

1
2
3
4
5
6
7
cd /root/data/docker_data/answer

docker-compose down

cd ..

rm -rf /root/data/docker_data/answer # 完全删除映射到本地的数据

安装多平台备份duplicati

GitHub原项目地址:https://github.com/duplicati/duplicati

官网地址:https://www.duplicati.com/download

docker-compose文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
version: "2.1"
services:
duplicati:
image: lscr.io/linuxserver/duplicati
container_name: duplicati
environment:
- PUID=0
- PGID=0
- TZ=Asia/Shanghai
volumes:
- /root/data/docker_data/duplicati/config:/config
- /root/data/docker_data/duplicati/backups:/backups
- /root/data:/source
ports:
- 8080:8200
restart: unless-stopped

onenav导航站

GitHub原项目地址:https://github.com/helloxz/onenav

1
2
3
4
5
6
7
8
9
10
11
12
version: '3.3'
services:
onenav:
container_name: onenav
ports:
- '8956:80'
environment:
- USER=xiaoz
- PASSWORD=xiaoz.me
volumes:
- '/root/data/docker_data/onenav:/data/wwwroot/default/data'
image: helloz/onenav