PyCharm通过docker运行Django项目

创建Dockerfile文件

# base image
FROM python:3.11.4-slim-bullseye


# 更新软件源为清华大学源
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free" > /etc/apt/sources.list
RUN echo "deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian-security/ bullseye-security main contrib non-free" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.tuna.tsinghua.edu.cn/debian-security/ bullseye-security main contrib non-free" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free" >> /etc/apt/sources.list
RUN echo "deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free" >> /etc/apt/sources.list


RUN apt-get update && apt-get install -y openssh-server

# 创建 .ssh 目录
RUN mkdir -p /root/.ssh
RUN chmod 700 /root/.ssh

# 配置 SSH
RUN mkdir -p /var/run/sshd
RUN echo 'root:root' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#StrictModes yes/StrictModes no/' /etc/ssh/sshd_config
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config

RUN apt-get update && apt-get install -y default-libmysqlclient-dev build-essential python3-dev pkg-config


WORKDIR /app

ENV VIRTUAL_ENV=/opt/venv

# 创建 Python 虚拟环境
RUN python -m venv ${VIRTUAL_ENV}


ENV PATH="${VIRTUAL_ENV}/bin:${PATH}"

RUN pip install --upgrade pip

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple




RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list \
    && sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list \
    && sed -i '/deb-src/s/^#//' /etc/apt/sources.list

RUN apt-get update \
    && apt-get install -y --no-install-recommends gcc g++ libc-dev libffi-dev libgmp-dev libmpfr-dev libmpc-dev ffmpeg

# set timezone
ENV TZ=Asia/Shanghai

RUN sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list \
        && sed -i 's/security.debian.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list \
        && sed -i '/deb-src/s/^#//' /etc/apt/sources.list \
        && apt-get update \
        && apt-get install -y --no-install-recommends curl nodejs libgmp-dev libmpfr-dev libmpc-dev zlib1g expat perl libsqlite3-0 curl wget git vim procps net-tools iputils-ping netcat ffmpeg\
        && apt-get autoremove -y \
        && rm -rf /var/lib/apt/lists/*


ARG COMMIT_SHA
ENV COMMIT_SHA=${COMMIT_SHA}

# ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
# 暴露 22 端口
EXPOSE 22

# 启动 SSH 服务
CMD ["/usr/sbin/sshd", "-D"]

在Dockerfile文件所处目录下放入Django项目的requirements.txt文件

在终端输入 docker build -t python3.11-ssh .   创建镜像

镜像创建成功后,使用PyCharm打开对应的Django项目,设置Python解析器为从docker镜像中读取

 

 随后一直next,最后create,等待建立好依赖索引。

 在PyCharm中配置Django启动器

 首先hosts需要配置为0.0.0.0,否则在docker容器中启动的Django将不允许外部的网络访问。

在environment中配置好项目的配置文件,最后在docker container settings制定好容器内的Django端口暴露。

posted @ 2025-01-24 16:08  margo  阅读(36)  评论(0)    收藏  举报