写在前面:docker及docker-compose的部署文档遍地都是,本文不再赘述。
1、编写docker-compose.yml配置文件
[root@localhost vsftp]# vim docker-compose.yml
version: '3'
services:
nginx:
image: nginx:1.21.6-alpine
container_name: ftp-nginx
ports:
- "80:80"
volumes:
- ./data:/usr/share/nginx/html
- ./nginx/conf.d:/etc/nginx/conf.d
restart: always
vsftpd:
image: shourai/vsftpd-alpine:latest
container_name: vsftp
environment:
- FTP_USER=admin #自定义用户名
- FTP_PASS=123123 #自定义用户密码
- PASV_ENABLE=YES
- PASV_ADDRESS=192.168.2.21 #宿主机的IP
- PASV_MIN_PORT=21100
- PASV_MAX_PORT=21110
- ANON_ENABLE=NO
- NO_ANON_PASSWD=NO
- ANON_ROOT=/var/ftp
volumes:
- ./data:/home/admin #与FTP_USER保持一致,即$FTP_USER的值是什么此处的目录就是什么
ports:
- "20:20"
- "21:21"
- "21100-21110:21100-21110"
restart: always
2、创建nginx挂载目录并编写配置文件
[root@localhost vsftp]# mkdir -p nginx/conf.d
[root@localhost vsftp]# vim nginx/conf.d/vsftp.conf
server{
listen 80;
server_name _;
root /usr/share/nginx/html;
location /{
autoindex on; # 开启目录文件列表
autoindex_exact_size on; # 显示出文件的确切大小,单位是bytes
autoindex_localtime on; # 显示的文件时间为文件的服务器时间
charset utf-8,gbk; # 避免中文乱码
}
}
3、启动vsftpd
[root@localhost vsftp]# docker-compose up -d
总结:docker-compose可以快速部署,方便迁移。本文中的vsftpd镜像是笔者试用几个镜像后的最终选择,且作者也制作了arm平台的镜像,十分方便往arm服务器上部署。