Spaces:
Running
Running
FROM ubuntu:22.04 | |
# Install necessary tools and aria2 | |
RUN apt-get update && apt-get install -y \ | |
tar \ | |
gzip \ | |
file \ | |
jq \ | |
curl \ | |
sed \ | |
aria2 \ | |
&& rm -rf /var/lib/apt/lists/* | |
# Set up a new user named "user" with user ID 1000 | |
RUN useradd -m -u 1000 user | |
# Switch to the "user" user | |
USER user | |
# Set home to the user's home directory | |
ENV HOME=/home/user \ | |
PATH=/home/user/.local/bin:$PATH | |
# Set the working directory to the user's home directory | |
WORKDIR $HOME/alist | |
# Download the latest alist release using jq for robustness | |
RUN curl -sL https://api.github.com/repos/alist-org/alist/releases/latest | \ | |
jq -r '.assets[] | select(.name | test("linux-amd64.tar.gz$")) | .browser_download_url' | \ | |
xargs curl -L | tar -zxvf - -C $HOME/alist | |
# Set up the environment | |
RUN chmod +x $HOME/alist/alist && \ | |
mkdir -p $HOME/alist/data | |
# Create data/config.json file with database configuration | |
RUN echo '{\ | |
"force": false,\ | |
"address": "0.0.0.0",\ | |
"port": 5244,\ | |
"scheme": {\ | |
"https": false,\ | |
"cert_file": "",\ | |
"key_file": ""\ | |
},\ | |
"cache": {\ | |
"expiration": 60,\ | |
"cleanup_interval": 120\ | |
},\ | |
"database": {\ | |
"type": "ENV_Alist_DB_TYPE",\ | |
"host": "ENV_Alist_DB_HOST",\ | |
"port": ENV_Alist_DB_PORT,\ | |
"user": "ENV_Alist_DB_USER",\ | |
"password": "ENV_Alist_DB_PASSWORD",\ | |
"name": "ENV_Alist_DB_NAME"\ | |
}\ | |
}' > $HOME/alist/data/config.json | |
# Create a startup script that runs Alist and Aria2 | |
RUN echo '#!/bin/bash\n\ | |
sed -i "s/ENV_Alist_DB_TYPE/${Alist_DB_TYPE:-mysql}/g" $HOME/alist/data/config.json\n\ | |
sed -i "s/ENV_Alist_DB_HOST/${Alist_DB_HOST:-localhost}/g" $HOME/alist/data/config.json\n\ | |
sed -i "s/ENV_Alist_DB_PORT/${Alist_DB_PORT:-3306}/g" $HOME/alist/data/config.json\n\ | |
sed -i "s/ENV_Alist_DB_USER/${Alist_DB_USER:-root}/g" $HOME/alist/data/config.json\n\ | |
sed -i "s/ENV_Alist_DB_PASSWORD/${Alist_DB_PASSWORD:-password}/g" $HOME/alist/data/config.json\n\ | |
sed -i "s/ENV_Alist_DB_NAME/${Alist_DB_NAME:-alist}/g" $HOME/alist/data/config.json\n\ | |
aria2c --enable-rpc --rpc-listen-all --rpc-allow-origin-all --rpc-listen-port=6800 --daemon\n\ | |
$HOME/alist/alist server --data $HOME/alist/data' > $HOME/alist/start.sh && \ | |
chmod +x $HOME/alist/start.sh | |
# Set the command to run when the container starts | |
CMD ["/bin/bash", "-c", "/home/user/alist/start.sh"] | |
# Expose the default Alist and Aria2 ports | |
EXPOSE 5244 6800 |