76 lines
2.9 KiB
Docker
76 lines
2.9 KiB
Docker
FROM ubuntu:24.04
|
|
|
|
ENV TZ=Asia/Seoul
|
|
ENV PYTHONUNBUFFERED=1
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# ========================================
|
|
# 1. Base packages & timezone setup
|
|
# ========================================
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends apt-utils && \
|
|
apt-get install -yq tzdata && \
|
|
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
|
|
apt-get install -y \
|
|
curl wget git tar gnupg2 lsb-release lz4 zstd vim \
|
|
build-essential zlib1g-dev libncurses5-dev libgdbm-dev \
|
|
libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev \
|
|
python3-dev libmysqlclient-dev pkg-config ca-certificates
|
|
|
|
# ========================================
|
|
# 2. Python 3.13 build & install
|
|
# ========================================
|
|
RUN cd /usr/src && \
|
|
wget https://www.python.org/ftp/python/3.13.11/Python-3.13.11.tar.xz && \
|
|
tar -xf Python-3.13.11.tar.xz && \
|
|
cd Python-3.13.11 && \
|
|
./configure --enable-optimizations && \
|
|
make altinstall && \
|
|
rm -rf /usr/src/Python-3.13.11 /usr/src/Python-3.13.11.tar.xz
|
|
|
|
# ========================================
|
|
# 3. Python symlinks
|
|
# ========================================
|
|
RUN rm -f /usr/bin/python /usr/bin/python3 && \
|
|
ln -s /usr/local/bin/python3.13 /usr/bin/python && \
|
|
ln -s /usr/local/bin/python3.13 /usr/bin/python3 && \
|
|
ln -s /usr/local/bin/python3.13 /usr/local/bin/python && \
|
|
ln -s /usr/local/bin/python3.13 /usr/local/bin/python3 && \
|
|
ln -s /usr/local/bin/pip3.13 /usr/bin/pip && \
|
|
ln -s /usr/local/bin/pip3.13 /usr/bin/pip3 && \
|
|
ln -s /usr/local/bin/pip3.13 /usr/local/bin/pip && \
|
|
ln -s /usr/local/bin/pip3.13 /usr/local/bin/pip3
|
|
|
|
# ========================================
|
|
# 4. Python packages
|
|
# ========================================
|
|
RUN pip install --upgrade pip && \
|
|
pip install wheel && \
|
|
pip install sqlalchemy alembic pydantic && \
|
|
pip install psycopg2-binary asyncpg && \
|
|
pip install mysqlclient asyncmy && \
|
|
pip install gunicorn uvicorn[standard] && \
|
|
pip install fastapi uv poetry
|
|
|
|
# ========================================
|
|
# 5. Percona XtraBackup (mysql backup)
|
|
# ========================================
|
|
RUN curl -O https://repo.percona.com/apt/percona-release_latest.generic_all.deb && \
|
|
apt-get install -y ./percona-release_latest.generic_all.deb && \
|
|
rm -f percona-release_latest.generic_all.deb && \
|
|
apt-get update && \
|
|
percona-release enable pxb-84-lts && \
|
|
apt-get install -y percona-xtrabackup-84
|
|
|
|
# ========================================
|
|
# 6. PostgreSQL backup (pgbackrest)
|
|
# ========================================
|
|
RUN apt-get install -y pgbackrest
|
|
|
|
# ========================================
|
|
# 7. Cleanup
|
|
# ========================================
|
|
RUN apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
|
|
update-ca-certificates
|