Skip to content

Commit

Permalink
aio base modified to debian-12-slim
Browse files Browse the repository at this point in the history
  • Loading branch information
mguptahub committed May 24, 2024
1 parent 59cd7e5 commit 58d1f16
Show file tree
Hide file tree
Showing 7 changed files with 223 additions and 162 deletions.
21 changes: 17 additions & 4 deletions aio/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,14 @@ RUN yarn turbo run build
# *****************************************************************************
# STAGE 3: Copy the project and start it
# *****************************************************************************
# FROM makeplane/plane-aio-base AS runner
FROM makeplane/plane-aio-base:single-docker-image AS runner

USER root

WORKDIR /app

RUN mkdir -p /app/{web,space,admin,api}
SHELL [ "/bin/bash", "-c" ]

COPY --from=installer /app/web/next.config.js ./web/
COPY --from=installer /app/web/package.json ./web/
Expand Down Expand Up @@ -107,7 +110,13 @@ ENV PIP_DISABLE_PIP_VERSION_CHECK=1

COPY apiserver/requirements.txt ./api/
COPY apiserver/requirements ./api/requirements
RUN pip install -r ./api/requirements.txt --compile --no-cache-dir

RUN apt-get install python3.12-venv -y

RUN python3 -m venv /app/venv && \
source /app/venv/bin/activate && \
/app/venv/bin/pip install --upgrade pip && \
/app/venv/bin/pip install -r ./api/requirements.txt --compile --no-cache-dir

# Add in Django deps and generate Django's static files
COPY apiserver/manage.py ./api/manage.py
Expand All @@ -119,7 +128,11 @@ COPY apiserver/bin ./api/bin/
RUN chmod +x ./api/bin/*
RUN chmod -R 777 ./api/

COPY aio/supervisord.conf /app/supervisord.conf

RUN chown -R app-user:app-user /app

USER app-user

COPY aio/supervisor.conf /app/supervisor.conf

CMD ["supervisord","-c","/app/supervisor.conf"]
CMD ["sudo", "/usr/bin/supervisord", "-c", "/app/supervisord.conf"]
115 changes: 65 additions & 50 deletions aio/Dockerfile.base
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"]
33 changes: 0 additions & 33 deletions aio/supervisor.base

This file was deleted.

75 changes: 0 additions & 75 deletions aio/supervisor.conf

This file was deleted.

37 changes: 37 additions & 0 deletions aio/supervisord.base
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
Loading

0 comments on commit 58d1f16

Please sign in to comment.