拉取镜像,创建容器,app为python项目文件夹,start.sh为服务启动脚本,封装了nginx、git、sudo、locales、vim和playwright,apt源和pip源为清华源
docker run -it --name python-from-requirements \
-p 8080:8080 \
-v /path/to/app:/app \
-v /path/to/start.sh:/usr/local/bin/start.sh \
-e PIP_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple" \
--restart always \
chung1912/python-from-requirements
start.sh脚本示例
#!/bin/bash
# 安装依赖(requirements.txt放在/app文件夹)
pip install -r requirements.txt
# 检查pip命令是否成功执行
if [ $? -eq 0 ]; then
python main.py
else
echo "依赖安装失败,请检查错误信息并修复后重试。"
fi
配置Nginx时的一个部署示例
docker run -it --name python-from-requirements \
-p 8080:8080 \
-p 443:443 \
-v /path/to/app:/app \
-v /path/to/app/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /path/to/app/nginx/cert.pem:/etc/nginx/cert.pem:ro \
-v /path/to/app/nginx/cert.key:/etc/nginx/cert.key:ro \
-v /path/to/start.sh:/usr/local/bin/start.sh \
-e PIP_INDEX_URL="https://pypi.tuna.tsinghua.edu.cn/simple" \
--restart always \
chung1912/python-from-requirements
nginx.conf的一个配置示例
events {
worker_connections 1024;
}
http {
server {
listen 80;
listen [::]:80;
server_name yourdomain.com; # 替换为您的域名
location / {
proxy_pass http://localhost:8080; # 8080为应用程序运行的端口,自行调整
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header Accept-Encoding gzip;
proxy_read_timeout 300s; # 超时时间,请自行调整
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name yourdomain.com; # 替换为您的域名
ssl_certificate /etc/nginx/private.pem;
ssl_certificate_key /etc/nginx/private.key;
location / {
proxy_pass http://localhost:8080; # 8080为应用程序运行的端口,请自行调整
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header Accept-Encoding gzip;
proxy_read_timeout 300s; # 超时时间,请自行调整
}
}
}
Content type
Image
Digest
sha256:0316680be…
Size
1.1 GB
Last updated
over 2 years ago
docker pull chung1912/python-from-requirements