forked from mirrors/fancyindex
first version
This commit is contained in:
commit
9d467e78c1
7 changed files with 254 additions and 0 deletions
50
Dockerfile
Normal file
50
Dockerfile
Normal file
|
@ -0,0 +1,50 @@
|
|||
FROM nginx:1.13
|
||||
LABEL maintainer "fraoustin@gmail.com"
|
||||
|
||||
ENV SET_CONTAINER_TIMEZONE false
|
||||
ENV CONTAINER_TIMEZONE ""
|
||||
|
||||
# manage user www-data
|
||||
RUN usermod -u 1000 www-data
|
||||
|
||||
# manage start container
|
||||
COPY ./src/entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
RUN mkdir /usr/share/docker-entrypoint.pre
|
||||
RUN mkdir /usr/share/docker-entrypoint.post
|
||||
COPY ./src/00_init.sh /usr/share/docker-entrypoint.pre/00_init.sh
|
||||
RUN chmod +x -R /usr/share/docker-entrypoint.pre
|
||||
|
||||
# install extra nginx
|
||||
RUN apt-get update && apt-get install -y \
|
||||
apache2-utils \
|
||||
git \
|
||||
nginx-extras \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY ./src/default.conf /etc/nginx/conf.d/default.conf
|
||||
RUN rm /etc/nginx/sites-enabled/default
|
||||
|
||||
# add cmd nginx
|
||||
COPY ./src/cmd/addauth.sh /usr/bin/addauth
|
||||
COPY ./src/cmd/rmauth.sh /usr/bin/rmauth
|
||||
RUN chmod +x /usr/bin/addauth
|
||||
RUN chmod +x /usr/bin/rmauth
|
||||
|
||||
# add theme
|
||||
RUN mkdir /theme
|
||||
WORKDIR /theme
|
||||
RUN git clone https://github.com/fraoustin/Nginx-Fancyindex-Theme.git
|
||||
ENV COLOR "blue"
|
||||
|
||||
RUN mkdir /share
|
||||
VOLUME /share
|
||||
|
||||
ENV WEBUSER user
|
||||
ENV WEBPASSWORD pass
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
CMD ["app"]
|
75
README.md
Normal file
75
README.md
Normal file
|
@ -0,0 +1,75 @@
|
|||
# Docker Image for fancyindex
|
||||
|
||||
generate a nginx server with fancyindex
|
||||
|
||||
You can use client
|
||||
|
||||
- ihm on http://127.0.0.1/ (fraoustin/Nginx-Fancyindex-Theme)
|
||||
|
||||
|
||||
load when start image load file in
|
||||
|
||||
- /usr/share/gitweb/docker-entrypoint.pre
|
||||
- /usr/share/gitweb/docker-entrypoint.post
|
||||
|
||||
## Parameter
|
||||
|
||||
- SET_CONTAINER_TIMEZONE (false or true) manage time of container
|
||||
- CONTAINER_TIMEZONE timezone of container
|
||||
- WEBUSER (default user)
|
||||
- WEBPASSWORD (default pass)
|
||||
- COLOR (default blue) for web ihm (blue, green, grey, greydark, orange, purple, red)
|
||||
|
||||
## Volume
|
||||
|
||||
- /share
|
||||
|
||||
## Port
|
||||
|
||||
- 80
|
||||
|
||||
## Command
|
||||
|
||||
- addauth : add user for git
|
||||
- rmauth : remove user
|
||||
|
||||
## Usage direct
|
||||
|
||||
run image fraoustin/webdav
|
||||
|
||||
docker run -d -v <localpath>:/share --name fancyindex -p 80:80 fraoustin/fancyindex
|
||||
|
||||
user default is *user* and password default is *pass*
|
||||
|
||||
you use http://localhost/ for access ihm
|
||||
|
||||
## Usage by Dockerfile
|
||||
|
||||
Sample of Dockerfile
|
||||
|
||||
FROM fraoustin/webdav
|
||||
COPY ./00_init.sh /usr/share/docker-entrypoint.pre/00_init.sh
|
||||
RUN chmod +x -R /usr/share/gitweb/docker-entrypoint.pre
|
||||
|
||||
File 00_init.sh
|
||||
|
||||
#!/bin/bash
|
||||
if [ ! -z "$WEBUSER" ]; then
|
||||
addauth $WEBUSER $WEPASSWORD
|
||||
fi
|
||||
|
||||
|
||||
build image mywebdav
|
||||
|
||||
docker build -t myfancyindex .
|
||||
|
||||
run image mywebdav
|
||||
|
||||
docker run -d -e "CONTAINER_TIMEZONE=Europe/Paris" -e DAVUSER=myuser" -e "DAVPASSWORD=mypassword" -v <localpath>:/share --name test -p 8080:80 myfancyindex
|
||||
|
||||
## External library
|
||||
|
||||
- mdl on https://getmdl.io/
|
||||
- Nginx-Fancyindex-Theme on https://github.com/fraoustin/Nginx-Fancyindex-Theme
|
||||
|
||||
|
5
src/00_init.sh
Normal file
5
src/00_init.sh
Normal file
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ ! -z "$WEBUSER" ]; then
|
||||
addauth $WEBUSER $WEBPASSWORD
|
||||
fi
|
38
src/cmd/addauth.sh
Normal file
38
src/cmd/addauth.sh
Normal file
|
@ -0,0 +1,38 @@
|
|||
#!/bin/bash
|
||||
FPASS="/etc/nginx/.htpasswd"
|
||||
|
||||
error(){
|
||||
echo "ERROR : parameters invalid !" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
usage(){
|
||||
echo "Usage: addauth user password"
|
||||
echo "--help or -h : view help"
|
||||
}
|
||||
|
||||
load(){
|
||||
if [ ! -f $FPASS ]; then
|
||||
htpasswd -bc $FPASS $1 $2
|
||||
else
|
||||
htpasswd -b $FPASS $1 $2
|
||||
fi
|
||||
}
|
||||
|
||||
# no parameters
|
||||
[[ $# -lt 1 ]] && error
|
||||
|
||||
case "$1" in
|
||||
--help)
|
||||
usage
|
||||
;;
|
||||
|
||||
-h)
|
||||
usage
|
||||
;;
|
||||
|
||||
*)
|
||||
[[ $# -ne 2 ]] && error
|
||||
load $1 $2
|
||||
|
||||
esac
|
35
src/cmd/rmauth.sh
Normal file
35
src/cmd/rmauth.sh
Normal file
|
@ -0,0 +1,35 @@
|
|||
#!/bin/bash
|
||||
FPASS="/etc/nginx/.htpasswd"
|
||||
|
||||
error(){
|
||||
echo "ERROR : parameters invalid !" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
usage(){
|
||||
echo "Usage: rmauth user"
|
||||
echo "--help or -h : view help"
|
||||
}
|
||||
|
||||
load(){
|
||||
if [ -f $FPASS ]; then
|
||||
htpasswd -bD $FPASS $1
|
||||
fi
|
||||
}
|
||||
|
||||
# no parameters
|
||||
[[ $# -ne 1 ]] && error
|
||||
|
||||
case "$1" in
|
||||
--help)
|
||||
usage
|
||||
;;
|
||||
|
||||
-h)
|
||||
usage
|
||||
;;
|
||||
|
||||
*)
|
||||
load $1
|
||||
|
||||
esac
|
32
src/default.conf
Normal file
32
src/default.conf
Normal file
|
@ -0,0 +1,32 @@
|
|||
server {
|
||||
listen 80 default_server;
|
||||
client_max_body_size 1G;
|
||||
|
||||
location /fancyindex {
|
||||
rewrite /fancyindex/(.*) /$1 break;
|
||||
root /theme/Nginx-Fancyindex-Theme;
|
||||
}
|
||||
|
||||
location / {
|
||||
# manage DELETE AND MKDIR
|
||||
if (-d $request_filename) { rewrite ^(.*[^/])$ $1/ break; }
|
||||
|
||||
root /share;
|
||||
fancyindex on;
|
||||
fancyindex_localtime on;
|
||||
fancyindex_name_length 255; # Maximum file name length in bytes, change as you like.
|
||||
# theme
|
||||
fancyindex_header "/fancyindex/header.html";
|
||||
fancyindex_footer "/fancyindex/footer.html";
|
||||
fancyindex_ignore "fancyindex";
|
||||
|
||||
dav_methods PUT DELETE MKCOL COPY MOVE;
|
||||
dav_ext_methods PROPFIND OPTIONS;
|
||||
create_full_put_path on;
|
||||
dav_access user:rw group:rw all:rw;
|
||||
|
||||
auth_basic "Access restricted";
|
||||
auth_basic_user_file /etc/nginx/.htpasswd;
|
||||
}
|
||||
|
||||
}
|
19
src/entrypoint.sh
Normal file
19
src/entrypoint.sh
Normal file
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
if [ $CONTAINER_TIMEZONE ] && [ "$SET_CONTAINER_TIMEZONE" = "false" ]; then
|
||||
echo ${CONTAINER_TIMEZONE} >/etc/timezone && dpkg-reconfigure -f noninteractive tzdata
|
||||
echo "Container timezone set to: $CONTAINER_TIMEZONE"
|
||||
export SET_CONTAINER_TIMEZONE=true
|
||||
else
|
||||
echo "Container timezone not modified"
|
||||
fi
|
||||
|
||||
if [ "$1" = 'app' ]; then
|
||||
/bin/run-parts --verbose --regex '\.(sh)$' "/usr/share/docker-entrypoint.pre"
|
||||
cp /theme/Nginx-Fancyindex-Theme/mdl/color/$COLOR.min.css /theme/Nginx-Fancyindex-Theme/mdl/material.min.css
|
||||
nginx -g "daemon off;"
|
||||
/bin/run-parts --verbose --regex '\.(sh)$' "/usr/share/docker-entrypoint.post"
|
||||
fi
|
||||
|
||||
exec "$@"
|
Loading…
Add table
Add a link
Reference in a new issue