使用docker-compose建立一个简陋的文件上传网站
闲聊
因为目前在学校,有时候懒得带U盘,机房的电脑没有ssh,自然也就没有scp了,所以闲来无聊就做个文件上传顺便练练技术。
最后弄了两天才弄好,最后又因为我服务器带宽那些太小没法传大文件,最后也算是小白练练技术吧。
正文
这次的实验是用nginx+php做的,docker-compose做托管
相关代码
实验文件结构

Dockerfile里就只是用php:7.4-fpm再设置一个工作目录;
docker-compose.yml文件内容
这里的networks可能是白设置了,我在nginx的配置文件直接使用的php的IP地址,关于那个version: "3"我也搞不懂,之前使用3.9显示版本低,搜了搜说最新版本没用这个了,所以就把它删了。
services:
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./html:/var/www/html
depends_on:
- php
networks:
- webnet
php:
build: ./
volumes:
- ./html:/var/www/html
ports:
- "9000:9000"
networks:
- webnet
networks:
webnet:
driver: bridge
nginx.conf内容
很平常的配置,就是与php连接那里弄了许久,第一天试了php:9000;ip:9000;php-upstream都没成功,第二天加了fastcgi_split_path_info这个,使用ip:9000就成功了;
还有一个可能,第二天我再次看了这个代码,它location ~ \\.php$多了个\,后面就给删了,所以我怀疑前一天是因为这个干的没成功。
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
root /var/www/html;
include fastcgi_params;
fastcgi_pass 192.168.64.2:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
}
index.php内容
下面这两个文件内容都是上网搜的
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
</head>
<body>
<h2>上传文件</h2>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="上传文件" name="submit">
</form>
</body>
</html>
upload.php内容
这个文件我后面改了那个检查文件大小,结果就一直访问超时
<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
// 检查文件是否已存在
if (file_exists($target_file)) {
echo "抱歉,文件已存在。";
$uploadOk = 0;
}
// 检查文件大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "抱歉,您的文件太大。";
$uploadOk = 0;
}
// 允许的文件格式
if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") {
echo "抱歉,只允许 JPG, JPEG, PNG, GIF 文件格式。";
$uploadOk = 0;
}
// 检查 $uploadOk 是否被设置为 0
if ($uploadOk == 0) {
echo "抱歉,您的文件没有上传。";
// 如果一切都好,尝试上传文件
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "文件 ". htmlspecialchars(basename($_FILES["fileToUpload"]["name"])). " 上传成功。";
} else {
echo "抱歉,上传文件时出现了错误。";
}
}
?>
本文来自博客园,作者:青瓦深巷,转载请注明原文链接: