-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
223 additions
and
162 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,71 +1,86 @@ | ||
FROM --platform=$BUILDPLATFORM tonistiigi/binfmt as binfmt | ||
|
||
FROM ubuntu:20.04 | ||
FROM debian:12-slim | ||
|
||
# Set environment variables for non-interactive installation | ||
# Set environment variables to non-interactive for apt | ||
ENV DEBIAN_FRONTEND=noninteractive | ||
|
||
# Update the package list and install dependencies | ||
RUN apt-get update && apt-get install -y \ | ||
wget \ | ||
gnupg \ | ||
lsb-release \ | ||
software-properties-common \ | ||
supervisor \ | ||
nginx \ | ||
curl \ | ||
python3-pip \ | ||
build-essential \ | ||
libssl-dev \ | ||
python3-dev \ | ||
bzip2 \ | ||
xz-utils \ | ||
zlib1g \ | ||
libpq-dev \ | ||
libxml2-dev \ | ||
libxslt1-dev \ | ||
libpopt0 | ||
|
||
# Installing Postgres | ||
RUN apt-get install -y postgresql postgresql-contrib | ||
|
||
# Install Redis | ||
RUN apt-get install -y redis-server | ||
|
||
#Install Node 18 | ||
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \ | ||
apt-get install -y nodejs | ||
SHELL [ "/bin/bash", "-c" ] | ||
|
||
# # Install Python 3.11 | ||
RUN add-apt-repository ppa:deadsnakes/ppa -y && \ | ||
# Update the package list and install prerequisites | ||
RUN apt-get update && \ | ||
apt-get install -y \ | ||
gnupg2 curl ca-certificates lsb-release software-properties-common \ | ||
build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev \ | ||
libsqlite3-dev wget llvm libncurses5-dev libncursesw5-dev xz-utils \ | ||
tk-dev libffi-dev liblzma-dev supervisor nginx nano vim ncdu | ||
|
||
# Install Redis 7.2 | ||
RUN echo "deb http://deb.debian.org/debian $(lsb_release -cs)-backports main" > /etc/apt/sources.list.d/backports.list && \ | ||
curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg && \ | ||
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" > /etc/apt/sources.list.d/redis.list && \ | ||
apt-get update && \ | ||
apt-get install -y python3.12 python3.12-dev python3.12-distutils && \ | ||
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1 && \ | ||
update-alternatives --install /usr/bin/python python /usr/bin/python3.12 1 && \ | ||
update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1 | ||
apt-get install -y redis-server | ||
|
||
# Install PostgreSQL 15 | ||
RUN curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor -o /usr/share/keyrings/pgdg-archive-keyring.gpg && \ | ||
echo "deb [signed-by=/usr/share/keyrings/pgdg-archive-keyring.gpg] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \ | ||
apt-get update && \ | ||
apt-get install -y postgresql-15 postgresql-client-15 | ||
|
||
# Install MinIO | ||
ARG TARGETARCH | ||
RUN if [ "$TARGETARCH" = "amd64" ]; then \ | ||
wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio; \ | ||
curl -fSl https://dl.min.io/server/minio/release/linux-amd64/minio -o /usr/local/bin/minio; \ | ||
elif [ "$TARGETARCH" = "arm64" ]; then \ | ||
wget https://dl.min.io/server/minio/release/linux-arm64/minio -O /usr/local/bin/minio; \ | ||
curl -fSl https://dl.min.io/server/minio/release/linux-arm64/minio -o /usr/local/bin/minio; \ | ||
else \ | ||
echo "Unsupported architecture: $TARGETARCH"; exit 1; \ | ||
fi && \ | ||
chmod +x /usr/local/bin/minio | ||
|
||
# Create necessary directories and set permissions | ||
RUN mkdir -p /data/postgres /data/redis /data/minio && \ | ||
chown -R postgres:postgres /data/postgres && \ | ||
chown -R redis:redis /data/redis && \ | ||
chown -R root:root /data/minio | ||
|
||
COPY ./supervisor.base /app/supervisor.conf | ||
# Install Node.js 18 | ||
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \ | ||
apt-get install -y nodejs | ||
|
||
# Install Python 3.12 from source | ||
RUN cd /usr/src && \ | ||
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz && \ | ||
tar xzf Python-3.12.0.tgz && \ | ||
cd Python-3.12.0 && \ | ||
./configure --enable-optimizations && \ | ||
make altinstall && \ | ||
rm -f /usr/src/Python-3.12.0.tgz | ||
|
||
# Clean up | ||
RUN apt-get clean && \ | ||
rm -rf /var/lib/apt/lists/* /usr/src/Python-3.12.0 | ||
|
||
WORKDIR /app | ||
|
||
RUN mkdir -p /app/{data,logs} && \ | ||
mkdir -p /app/data/{redis,pg,minio,nginx} && \ | ||
mkdir -p /app/logs/{access,error} && \ | ||
mkdir -p /etc/supervisor/conf.d | ||
|
||
# Create Supervisor configuration file | ||
COPY supervisord.base /app/supervisord.conf | ||
|
||
RUN apt-get update && \ | ||
apt-get install -y sudo lsof net-tools && \ | ||
apt-get clean | ||
|
||
# Add a new user 'app-user' and give sudo access | ||
RUN useradd -m -s /bin/bash app-user && \ | ||
echo 'app-user ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers | ||
|
||
RUN chown -R app-user:app-user /app | ||
|
||
# Expose the necessary ports | ||
EXPOSE 5432 6379 9001 80 443 | ||
USER app-user | ||
|
||
RUN mkdir -p /var/log/supervisord/ | ||
# Expose ports for Redis, PostgreSQL, and MinIO | ||
EXPOSE 6379 5432 9000 80 | ||
|
||
CMD ["supervisord","-c","/app/supervisor.conf"] | ||
# Start Supervisor | ||
CMD ["sudo", "/usr/bin/supervisord", "-c", "/app/supervisord.conf"] |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
[supervisord] | ||
user=root | ||
nodaemon=true | ||
stderr_logfile=/app/logs/error/supervisor.err.log | ||
stdout_logfile=/app/logs/access/supervisor.out.log | ||
|
||
[program:redis] | ||
directory=/app/data/redis | ||
command=redis-server | ||
autostart=true | ||
autorestart=true | ||
stderr_logfile=/app/logs/error/redis.err.log | ||
stdout_logfile=/app/logs/access/redis.out.log | ||
|
||
[program:postgresql] | ||
user=postgres | ||
command=/usr/lib/postgresql/15/bin/postgres --config-file=/etc/postgresql/15/main/postgresql.conf | ||
autostart=true | ||
autorestart=true | ||
stderr_logfile=/app/logs/error/postgresql.err.log | ||
stdout_logfile=/app/logs/access/postgresql.out.log | ||
|
||
[program:minio] | ||
directory=/app/data/minio | ||
command=minio server /app/data/minio | ||
autostart=true | ||
autorestart=true | ||
stderr_logfile=/app/logs/error/minio.err.log | ||
stdout_logfile=/app/logs/access/minio.out.log | ||
|
||
[program:nginx] | ||
directory=/app/data/nginx | ||
command=/usr/sbin/nginx -g 'daemon off;' | ||
autostart=true | ||
autorestart=true | ||
stderr_logfile=/app/logs/error/nginx.err.log | ||
stdout_logfile=/app/logs/access/nginx.out.log |
Oops, something went wrong.