服务环境快速搭建
初始化 docker 环境
创建自定义网络,后续容器连接到这个网络
1
| docker network create dev-network
|
解包镜像
1
| docker load -i /opt/docker_images/mysql-8.0.28.tar
|
redis
配置文件修改
启动容器
1 2 3 4 5 6 7 8 9
| sudo docker run -d \ --name redis_6_2_14 \ --net dev-network \ -v /opt/docker_data/redis/6.2.14/data:/data \ -v /opt/docker_data/redis/6.2.14/redis.conf:/usr/local/etc/redis/redis.conf \ -p 6379:6379 \ --restart always \ redis:6.2.14 \ redis-server /usr/local/etc/redis/redis.conf
|
mysql
运行 mysql 容器
某些 Bash 配置中,!
字符被解释为历史展开符号。
使用单引号并在命令前禁用历史展开功能:
1 2 3 4 5 6 7
| sudo docker run -d \ --name mysql_8_0_28 \ -e MYSQL_ROOT_PASSWORD='root_password' \ -v /opt/application/mysql/data_mysql_8_0_28:/var/lib/mysql \ -p 3306:3306 \ --restart always \ mysql:8.0.28
|
查看当前的 wait_timeout
和 interactive_timeout
设置:
1 2
| SHOW VARIABLES LIKE 'wait_timeout'; SHOW VARIABLES LIKE 'interactive_timeout';
|
修改 wait_timeout
和 interactive_timeout
设置:
1 2
| SET GLOBAL wait_timeout = 300; -- 设置为5分钟 SET GLOBAL interactive_timeout = 300; -- 设置为5分钟
|
查看最大连接数:
1
| SHOW VARIABLES LIKE 'max_connections';
|
已有数据卷
1 2 3 4 5 6 7 8
| sudo docker run -d \ --name mysql_8_0_28 \ --net dev-network \ -v /opt/docker_data/mysql/8.0.28/data:/var/lib/mysql \ -v /opt/docker_data/mysql/8.0.28/config/my.cnf:/etc/mysql/my.cnf \ -p 3306:3306 \ --restart always \ mysql:8.0.28
|
打包镜像
1
| docker save -o /opt/docker_images/mysql-8.0.28.tar mysql:8.0.28
|
解包镜像
1
| docker load -i /opt/docker_images/mysql-8.0.28.tar
|
alist
1 2 3 4 5 6 7 8 9 10
| docker run -d --restart=always \ --net dev-network \ -v /opt/docker_data/alist:/opt/alist/data \ -p 5244:5244 \ -e PUID=0 \ -e PGID=0 \ -e UMASK=022 \ -e "TZ=Europe/Warsaw" \ --name="alist" \ xhofe/alist:latest
|
1 2 3 4 5 6 7 8 9 10 11 12
| docker run -d \ --restart always \ --net dev-network \ -v /opt/docker_data/alist:/opt/alist/data \ -v /mnt/sda2:/opt/alist/doc \ -p 5244:5244 \ -e PUID = 0 \ -e PGID = 0 \ -e UMASK = 022 \ -e TZ = Europe/Warsaw \ --name alist \ xhofe/alist: latest
|
docker 安装时挂载本地存储只能挂载容器内部存储,无法挂载宿主机的,只能通过映射。
或者,直接在本机安装
1 2 3 4 5 6 7
|
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s install /opt/application
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s update /opt/application
curl -fsSL "https://alist.nn.ci/v3.sh" | bash -s uninstall /opt/application
|
napcatQQ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| docker run -d \ -p 3000:3000 \ -p 3001:3001 \ -p 6099:6099 \ --restart=always \ -e HTTP_ENABLE=true \ -e HTTP_POST_ENABLE=true \ -e HTTP_URLS='["http://ip:5140/onebot"]' \ -e ACCOUNT=qq账号 \ -e WS_ENABLE=true \ -e WSR_ENABLE=true \ -e WS_URLS='["ws://ip:5140/onebot"]' \ -e DEBIAN_FRONTEND=noninteractive \ -e TZ=Asia/Shanghai \ -v /opt/docker_data/napcat/QQ:/root/.config/QQ \ -v /opt/docker_data/napcat/config:/usr/src/app/napcat/config \ mlikiowa/napcat-docker:latest bash entrypoint.sh
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| docker run -d \ -e ACCOUNT=qq账号 \ -e WS_ENABLE=true \ -e WSR_ENABLE=true \ -e WS_URLS='["ws://ip:5140/onebot"]' \ -e HTTP_ENABLE=true \ -e HTTP_POST_ENABLE=true \ -e HTTP_URLS='["http://ip:5140/onebot"]' \ -p 3000:3000 \ -p 3001:3001 \ -p 6099:6099 \ --name napcat \ --restart=always \ -v /opt/docker_data/napcat/QQ:/root/.config/QQ \ -v /opt/docker_data/napcat/config:/usr/src/app/napcat/config \ mlikiowa/napcat-docker:latest
|
登录
Vaultwarden 密码管理
1
| docker run -d --name vaultwarden -v /opt/docker_data/vaultwarden/:/data/ --restart always -p 50000:80 vaultwarden/server:latest
|
1 2 3 4 5 6 7 8
| docker run -d --name vaultwarden \ -e SIGNUPS_ALLOWED=false \ -e INVITATIONS_ALLOWED=false \ -e ADMIN_TOKEN=some_random_token_as_per_above_explanation \ -e LOG_FILE=/data/vaultwarden.log \ -v /vw-data/:/data/ \ -p 80:80 \ vaultwarden/server:latest
|
nacos
1 2 3 4 5 6 7
| docker run --name nacos_2_2_3 \ --net dev-network \ -e MODE = standalone \ -v /opt/docker_data/nacos/2.2.3:/home/nacos \ -p 8848:8848 \ -p 9848:9848 \ -d nacos/nacos-server: v2.2.3
|
ElasticSearch
1
| docker run -d --name elasticsearch_8_12_1 --net dev-network -p 9200:9200 -p 9300:9300 -e "discovery.type = single-node" -v /opt/docker_data/elasticsearch/8.12.1:/usr/share/elasticsearch elasticsearch: 8.12.1
|
1 2 3 4 5 6 7
| docker run -d --name elasticsearch_8_12_1 \ --net dev-network \ -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type = single-node" \ -v /opt/docker_data/elasticsearch/8.12.1:/usr/share/elasticsearch \ elasticsearch: 8.12.1
|
ncmctl
登录
1 2 3 4 5
| docker run --rm -it \ -v /opt/docker_data/ncmctl:/root \ -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime: ro \ -e TZ = Asia/Shanghai \ chaunsin/ncmctl: latest /app/ncmctl login qrcode
|
先检查时区,错误时执行
1
| ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
|
删除原容器
1 2
| docker stop ncmctl docker rm ncmctl
|
启动
1 2 3 4 5
| docker run -it -d --name ncmctl \ -v /opt/docker_data/ncmctl:/root \ -v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime: ro \ -e TZ = Asia/Shanghai \ chaunsin/ncmctl: latest /app/ncmctl task --sign.cron "5 0 * * *" --partner.cron " 5 0 * * *"
|
lylme_spage
克隆 lylme_spage 仓库 doker 分支
1 2
| git clone -b docker https://github.com/LyLme/lylme_spage.git /opt/docker_data/lylme_spage cd /opt/docker_data/lylme_spage && ls
|
编辑 docker-compose.yaml
文件
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
| version: '3' services: php: container_name: "spage-php74" build: ./php image: php74-fpm-alpine restart: always volumes: - ./php/etc:/usr/local/etc/php/conf.d - ./www:/var/www/html stdin_open: true tty: true links: - "mysql" networks: spage: ipv4_address: 10.10.10.2 environment: - TZ = Asia/Shanghai nginx: container_name: "spage-nginx" image: nginx: latest restart: always ports: - "20002:80" environment: - TZ = Asia/Shanghai depends_on: - "php" links: - "php" volumes: - ./nginx/conf.d:/etc/nginx/conf.d - ./nginx/log:/var/log/nginx/ - ./www:/var/www/html networks: spage: ipv4_address: 10.10.10.10 mysql: container_name: "spage-mysql" image: mysql: 5.7 volumes: - ./mysql/data:/var/lib/mysql restart: always environment: - TZ = Asia/Shanghai - MYSQL_ROOT_PASSWORD = 123456 - MYSQL_DATABASE = spage networks: spage: ipv4_address: 10.10.10.1 networks: spage: driver: bridge driver_opts: com.docker.network.enable_ipv6: "true" ipam: config: - subnet: 10.10.0.0/16
|
开始使用
- 访问 http://IP: 8080/install,进入六零导航页安装程序(若提示环境检测不通过可尝试执行
docker-compose restart
重启容器再试)
- 数据库配置
- 数据库地址:
10.10.10.1
或(spage-mysql
)
- 数据库端口:
3306
- 数据库名:
spage
(或其他,若数据库名不存在安装程序会自动创建)
- 数据库用户名:
root
- 数据库密码:第 2 步设置的密码,默认 123456
- 完成安装
- 外网地址:
http://IP:8080
- 内网地址:
http://10.10.10.10
- 后台地址
http://IP[:端口]/admin
- 后台账号:
admin
- 后台密码:
123456
将多个镜像源添加到 Docker 配置
要将多个镜像源添加到 Docker 配置中,可以在 daemon.json
文件中配置多个镜像源。
编辑 Docker 配置文件: 创建或编辑 /etc/docker/daemon.json
文件:
1
| sudo vi /etc/docker/daemon.json
|
配置 Docker 使用多个镜像源: 在 daemon.json
文件中添加或修改以下内容:
1 2 3 4 5
| { "registry-mirrors": [ "https://hub.atomgit.com/" ] }
|
重新启动 Docker 服务 : 保存文件后,重新启动 Docker 服务以应用更改:
1 2
| sudo systemctl daemon-reload sudo systemctl restart docker
|
验证配置: 运行以下命令来验证新的镜像源是否生效:
在输出信息中查找 Registry Mirrors
部分,确保显示 https://hub.atomgit.com/
和 https://0vsv80z0.mirror.aliyuncs.com
。
完成这些步骤后,Docker 将使用多个镜像源。然后可以再次尝试构建镜像:
1
| docker build -t qmsgredis -f qmsg-redis-Dockerfile .
|
这样配置后,Docker 将从多个镜像源拉取镜像,加快下载速度并提高可靠性。