【教程】使用docker搭建WebDAV服务

由于zotero和joplin等软件同步需要用到WebDAV,而国内WebDAV用的最多的坚果云存在一些限制,用的还是不太放心,于是便自建WebDAV服务.WebDAV是一项比较成熟的技术,其实现方式很多.本次使用的是docker-webdav的开源项目,其使用docker进行部署,操作十分方便.

环境

  • 腾讯云服务器
  • CentOS 8.2

安装docker,docker-compose

拉取镜像

docker pull bytemark/webdav

启动

通过docker启动

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

停止容器

docker stop webdav

通过docker-compose启动(推荐)

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

mkdir 
mkdir compose
cd compose
vim docker-compose.yml
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

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

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

image-20230124212128249

关闭

docker-compose down

设置密码

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

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

中文乱码修复

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

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      <-----------添加这一行
  AuthUserFile "/user.passwd"
  <RequireAny>
    Require valid-user
  </RequireAny>
</Directory>

从容器创建一个新的镜像

 docker commit <容器id> bytemark/webdav:v1.1

最终的配置文件

version: '1'
services:
  webdav:
    container_name: mydav
    image: bytemark/webdav:v1.1
    restart: always
    ports:
      - "80:80"
    environment:
      #SERVER_NAMES: <你的域名>
      LOCATION: /dav  # 客户端连接url,默认是/
      AUTH_TYPE: Digest
      #USERNAME: xxxxx #如果挂载了user.passwd可以不用这里的用户名和密码
      #PASSWORD: xxxxx 
      ANONYMOUS_METHODS: '' #GET,PROPFIND,OPTIONS,HEAD #ALL #未登录用户允许的HTTP方法,如果需要未登录也能读就要设置为后面的一串
    volumes:
      - <本机的webdav共享文件夹目录>:/var/lib/dav/data
      - /root/compose/user.passwd:/user.passwd #前者改成实际的user.passwd的路径

客户端测试

## windows

客户端使用RaiDrive进行测试,可以将webdav的共享文件夹挂载到本地硬盘

image-20230124212508166

  • 如果是http不勾选地址,端口使用80

设置完成后在文件资源管理器中看到挂载的共享盘,使用方式和正常的文件夹相同

image-20230124212733576

mac

右键访达连接服务器,输入http://<IP>/dav,按提示输入账户密码即可使用

参考

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
使用Docker搭建WebLogic服务的基本原理是将WebLogic Server容器化,并在Docker中运行它。Docker是一个开源平台,用于开发,交付和运行应用程序,可以将应用程序打包成容器,以便在任何地方轻松部署和运行。 在搭建WebLogic服务之前,您需要安装Docker和WebLogic Server。然后,您可以使用Dockerfile创建一个容器映像,该映像包含WebLogic Server安装文件和其他必需的依赖项。接下来,您可以使用Docker命令构建该映像并启动容器。一旦容器启动,您可以通过WebLogic控制台或JMX远程管理WebLogic Server。 下面是一个简单的Dockerfile示例,用于构建基于Oracle Linux的WebLogic Server 12.2.1.3映像: ``` FROM oraclelinux:7-slim COPY jdk-8u181-linux-x64.rpm / RUN rpm -i jdk-8u181-linux-x64.rpm && rm jdk-8u181-linux-x64.rpm COPY fmw_12.2.1.3.0_wls_Disk1_1of1.zip / RUN yum install -y unzip && \ unzip fmw_12.2.1.3.0_wls_Disk1_1of1.zip && \ rm fmw_12.2.1.3.0_wls_Disk1_1of1.zip && \ java -jar fmw_12.2.1.3.0_wls.jar -silent -responseFile /weblogic.rsp && \ rm fmw_12.2.1.3.0_wls.jar /weblogic.rsp EXPOSE 7001 CMD ["/u01/oracle/wlserver/server/bin/startWebLogic.sh"] ``` 该Dockerfile首先从Oracle Linux 7的官方映像开始,并将JDK和WebLogic Server安装文件复制到容器中。然后,它使用Linux的软件包管理器来安装必要的依赖项,并运行WebLogic Server的安装程序。最后,它将容器配置为暴露7001端口,并在启动时启动WebLogic Server。 要构建该映像,请使用以下命令: ``` docker build -t weblogic:12.2.1.3 . ``` 这将使用当前目录中的Dockerfile构建一个名为“weblogic:12.2.1.3”的新映像。一旦映像构建完成,您可以使用以下命令启动容器: ``` docker run -p 7001:7001 weblogic:12.2.1.3 ``` 这将启动一个新的容器,该容器已基于“weblogic:12.2.1.3”映像,并将容器的7001端口映射到主机的7001端口。一旦容器启动,您可以使用WebLogic控制台或JMX远程管理WebLogic Server。 希望这能回答您的问题!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值