你可能会说,docker都搞不懂玩什么docker,但是现实是在这个云服务器99元/年的情况下,任何人都可能用上,不懂不代表用不上。
对于新手来说docker有一定的门槛,虽然大部分的镜像发布者都会告知使用方法,但是终究是有些地方需要修改,比如端口和挂载。
以vaultwarden为例,百度一搜第一个结果告诉我,应该这样做
然后执行以下命令就可以了
docker run -d --name vaultwarden --restart=always -e WEBSOCKET_ENABLED=true -e SIGNUPS_ALLOWED=false -e DOMAIN=https://vault.moutai.com.cn -e ADMIN_TOKEN=eMEt*W4ay7 -e DATABASE_URL=mysql://vault:[email protected]:3306/vault -v /data/bitwarden/:/data/ -p 8080:80 -p 3012:3012 vaultwarden/server:latest
在这么长一串命令下,但凡是个新手肯定是一脸懵,想要搞清楚自己需要修改哪里非常的困难,当然教程里面给了解释,依然有点复杂
以下是启动命令中使用的选项和参数的解释:
- -d:以守护进程模式运行容器。
- --name vaultwarden:指定容器的名称为"vaultwarden";
- --restart=always:设置容器在重启时自动启动;
- -e WEBSOCKET_ENABLED=true:启用WebSocket支持;
- -e SIGNUPS_ALLOWED=false:禁止用户自行注册新账户;
- -e DOMAIN=https://vault.moutai.com.cn:设置Vaultwarden的域名;
- -e ADMIN_TOKEN=eMEt*W4ay7:设置管理员令牌(密码);
- -e DATABASE_URL=mysql://vault:[email protected]:3306/vault:指定MySQL数据库的连接URL;
- -v /data/bitwarden/:/data/:将宿主机上的/data/bitwarden/目录挂载到容器内的/data/目录,用于持久化数据;
- -p 8080:80 -p 3012:3012:将宿主机的8080端口映射到容器的80端口,以及3012端口映射到容器的3012端口;
- vaultwarden/server:latest:运行最新版本的Vaultwarden服务器镜像;
这就不得不说到docker-compose了,真的是简洁明了,编辑好了以后只需要一条命令docker-compose up就可以运行了
在服务器上创建一个docker-compose.yml文件,写入如下内容
version: "3.8"
services:
vaultwarden:
container_name: vaultwarden #指定容器的名称为"vaultwarden"
image: vaultwarden/server:latest #运行最新版本的Vaultwarden服务器镜像
environment:
- WEBSOCKET_ENABLED=true #启用WebSocket支持
- SIGNUPS_ALLOWED=false #禁止用户自行注册新账户
- DOMAIN=https://vault.moutai.com.cn #设置Vaultwarden的域名
- ADMIN_TOKEN=eMEt*W4ay7 #设置管理员令牌(密码)
- DATABASE_URL=mysql://vault:[email protected]:3306/vault #指定MySQL数据库的连接URL
ports:
- 8080:80 #将宿主机的8080端口映射到容器的80端口
- 3012:3012 #3012端口映射到容器的3012端口
restart: always #设置容器在重启时自动启动
volumes:
- /data/bitwarden/:/data/ #将宿主机上的/data/bitwarden/目录挂载到容器内的/data/目录,用于持久化数据
然后
docker-compose up
#没有报错的情况下,Ctrl+c然后加上-d参数
docker-compose up -d
-d表示以守护进程的方式运行容器,即在后台运行,不会阻塞终端。
为什么先不加-d,因为运行可能会出错,不加-d会输出日志,另外有些容器的管理员密码可能会在初次运行的日志里面
参考资料:docker部署Vaultwarden密码共享管理系统-CSDN博客