拉取镜像

1
docker pull bytemark/webdav

通过docker启动

1
2
3
4
5
mkdir <本机的webdav共享文件夹目录>
docker run --restart always -v <本机的webdav共享文件夹目录>:/var/lib/dav/data \
-e AUTH_TYPE=Digest -e USERNAME=test01 -e PASSWORD=123 \
--publish 80:80 --name webdav \
-e LOCATION=/webdav -d bytemark/webdav

停止容器

1
docker stop webdav

通过docker-compose启动(推荐)

将配置写入yaml避免每次启动带一堆参数

1
2
3
4
mkdir 
mkdir compose
cd compose
vim docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '1'
services:
webdav:
container_name: mydav
image: bytemark/webdav
restart: always
ports:
- "80:80"
environment:
AUTH_TYPE: Digest #HTTP使用digest,HTTPS使用Basic
USERNAME: test01
PASSWORD: 123
volumes:
- <本机的webdav共享文件夹目录>:/var/lib/dav/data

启动docker-compose

1
2
docker-compose up -d    
# -d为后台运行

此时可以访问服务器的ip,能看到共享文件夹的内容

关闭

1
docker-compose down

设置密码

除了在docker-compose.yml中设置密码也可以将验证信息写入文件user.passwd,这样可以多用户访问,并且密码更改可以不用重启docker-compose

1
2
3
4
5
6
# 安装 htdigest
yum install httpd-tools
# 在 compose 目录中
touch user.passwd
htdigest -c user.passwd WebDAV <你的用户名> # -c是新建文件夹或覆盖,不带参数是追加
#根据提示输入密码并重复

htdigest用法

中文乱码修复

通过测试发现,当文件名中出现中文时会出现乱码,解决方案参考issue

1
2
3
docker ps #查看容器id
docker exec -it <容器id> /bin/bash
vi conf/conf-enabled/dav.conf
<Directory "/var/lib/dav/data/">
  Dav On
  Options Indexes FollowSymLinks

  AuthType Basic
  AuthName "WebDAV"
  IndexOptions Charset=utf-8      <