docker run -d \
--name ftp \
-it \
-e FTP_IP=10.0.0.252 \
-e FTP_USER_NAME=joe \
-e FTP_USER_PASS=123 \
-e FTP_USER_GID=102 \
-e FTP_USER_UID=102 \
-p 21:21 \
-p 30000-30060:30000-30060 \
-v /log.txt:/var/log/ftp-upload.log:z \
-v /data:/data:z \
mateusfmello/pure-ftpd:tls-1.0.49
docker run -d \
--name ftp \
-it \
-e FTP_IP=10.0.0.252 \
-e FTP_USER_NAME=joe \
-e FTP_USER_PASS=123 \
-e FTP_USER_GID=102 \
-e FTP_USER_UID=102 \
-p 21:21 \
-p 30000-30060:30000-30060 \
-v /log.txt:/var/log/ftp-upload.log \
-v /data:/data \
mateusfmello/pure-ftpd:tls-1.0.49
#!/bin/sh
echo 'Iniciando...'
# Caso tenha definido o IP do servidor FTP
if [ ! -z "$FTP_IP" ]
then
sed -i -e "s,^# ForcePassiveIP .*,ForcePassiveIP $FTP_IP," /etc/pure-ftpd.conf
fi
# Adicionando usuário
if [ ! -z "$FTP_USER_NAME" ] && [ ! -z "$FTP_USER_PASS" ]
then
echo 'Criando usuário...'
mkdir -p "/data/$FTP_USER_NAME"
PWD_FILE='/tmp/4h5eg3y33h5sdg234'
echo "$FTP_USER_PASS
$FTP_USER_PASS" > "$PWD_FILE"
PURE_PW_ADD_FLAGS=""
if [ ! -z "$FTP_USER_UID" ]
then
PURE_PW_ADD_FLAGS="$PURE_PW_ADD_FLAGS -u $FTP_USER_UID"
else
PURE_PW_ADD_FLAGS="$PURE_PW_ADD_FLAGS -u ftpuser"
fi
if [ ! -z "$FTP_USER_GID" ]
then
PURE_PW_ADD_FLAGS="$PURE_PW_ADD_FLAGS -g $FTP_USER_GID"
fi
pure-pw useradd "$FTP_USER_NAME" -m -d "/data/$FTP_USER_NAME" $PURE_PW_ADD_FLAGS < "$PWD_FILE"
rm "$PWD_FILE"
if [ ! -z "$FTP_USER_UID" ]
then
if ! [[ $(ls -ldn /data/$FTP_USER_NAME | awk '{print $3}') = $FTP_USER_UID ]]
then
chown $FTP_USER_UID:$FTP_USER_GID "/data/$FTP_USER_NAME"
fi
else
if ! [[ $(ls -ld /data/$FTP_USER_NAME | awk '{print $3}') = 'ftpuser' ]]
then
chown ftpuser "/data/$FTP_USER_NAME"
fi
fi
fi
echo 'Executando Pure-FTPd...'
pure-ftpd /etc/pure-ftpd.conf
sleep 5
echo 'Executando pure-uploadscript...'
pure-uploadscript -B -r /script-upload-complete.sh
sleep 5
while true
do
AMMOUNT_PURE_FTPD="$(pgrep pure-ftpd | wc -l)"
AMMOUNT_PURE_FTPD_UPLOAD="$(pgrep pure-upload | wc -l)"
# echo -e "Pure-FTPd: $AMMOUNT_PURE_FTPD"
# echo -e "Pure-FTPd Uploads: $AMMOUNT_PURE_FTPD_UPLOAD"
if [[ $AMMOUNT_PURE_FTPD -eq 0 ]] || [[ $AMMOUNT_PURE_FTPD_UPLOAD -eq 0 ]]; then
echo 'Erro !!!'
exit 1
# else
# echo 'Tudo rodando perfeitamente...'
fi
sleep 10
done
FROM alpine AS builder
RUN apk update && apk upgrade
RUN apk add --no-cache \
libressl3.3-libcrypto \
libressl3.3-libssl \
libsodium \
openssl
RUN apk add --no-cache --virtual \
.tool-deps \
curl \
coreutils \
autoconf \
g++ \
libtool \
make
RUN apk add --no-cache --virtual \
.build-deps \
libressl-dev \
libsodium-dev
RUN curl -fL -o /tmp/pure-ftpd.tar.gz \
https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.49.tar.gz \
&& (echo "7e7d4c81c5237624051bde53db6d9abcbae565a4e8a88627d81d369064b475f4b56305c105ed275264cce068844caad25b2014f41e2540058553222151fe3af8 /tmp/pure-ftpd.tar.gz" \
| sha512sum -c -) \
&& tar -xzf /tmp/pure-ftpd.tar.gz -C /tmp/ \
&& cd /tmp/pure-ftpd-* \
&& ./configure --prefix=/usr \
--with-tls \
--with-puredb \
--with-language=brazilian-portuguese \
--with-uploadscript \
--with-rfc2640 \
--without-capabilities \
--without-humor \
--without-inetd \
--without-usernames \
&& make \
&& make install
# Imagem final
FROM alpine
LABEL org.opencontainers.image.authors="[email protected]"
RUN apk update && apk upgrade
RUN apk add --no-cache \
libressl3.3-libcrypto \
libressl3.3-libssl \
libsodium \
openssl
COPY --from=builder /etc/pure-ftpd.conf /etc/pure-ftpd.conf
COPY --from=builder /usr/sbin/pure-* /usr/sbin/
COPY --from=builder /usr/bin/pure-* /usr/bin/
RUN addgroup -S -g 101 pure-ftpd \
&& adduser -S -u 101 -D -s /sbin/nologin -H -h /data -G pure-ftpd -g pure-ftpd pure-ftpd \
&& install -d -o pure-ftpd -g pure-ftpd /data
RUN sed -i -e 's,^MaxClientsPerIP .*,MaxClientsPerIP 30,' /etc/pure-ftpd.conf \
&& sed -i -e 's,^# CallUploadScript .*,CallUploadScript yes,' /etc/pure-ftpd.conf \
&& sed -i -e 's,^# CreateHomeDir .*,CreateHomeDir yes,' /etc/pure-ftpd.conf \
&& sed -i -e 's,^# TLS .*,TLS 1,' /etc/pure-ftpd.conf \
&& sed -i -e 's,^# CertFile ,CertFile ,' /etc/pure-ftpd.conf \
&& sed -i -e 's,^# PureDB,PureDB,' /etc/pure-ftpd.conf \
&& sed -i -e 's,^MaxDiskUsage .*,MaxDiskUsage 75,' /etc/pure-ftpd.conf \
&& sed -i -e 's,^# PassivePortRange .*,PassivePortRange 30000 30060,' /etc/pure-ftpd.conf
RUN cd / \
&& rm -rf /usr/share/man /var/cache/apk/* /tmp/*
RUN echo "#!/bin/sh" > /script-upload-complete.sh \
$'\n' >> /script-upload-complete.sh \
"echo -e \"Arquivo novo: \$@\" >> /var/log/ftp-upload.log" >> /script-upload-complete.sh \
&& chmod +x /script-upload-complete.sh
RUN mkdir -p /etc/ssl/private \
&& openssl req -x509 -nodes -newkey rsa:4096 -sha512 \
-subj "/C=BR/ST=Santa-Catarina/L=Concordia/O=Iungo Web/CN=iungoweb.io/[email protected]" \
-keyout /etc/ssl/private/pure-ftpd.pem \
-out /etc/ssl/private/pure-ftpd.pem \
&& chmod 600 /etc/ssl/private/pure-ftpd.pem
COPY ./entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT []
CMD /entrypoint.sh
Content type
Image
Digest
Size
6.5 MB
Last updated
about 5 years ago
docker pull mateusfmello/pure-ftpd:tls-1.0.49