欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Dockerfile 部署python爬虫脚本/Java项目大全

程序员文章站 2022-06-11 13:29:03
...

Python爬虫项目

安装虚拟环境

# linux 安装
pip3 install virtualenv   
# windows10
# virtualenvwrapper-win
pip install virtualenv
# 创建虚拟环境
mkvirtualenv <虚拟环境名称>

使用Pycharm 进行 依赖管理

# 获取requirements.txt 配置文件
pip freeze>requirements.txt
# 根据 requirements.txt 安装依赖
pip install -r requirements.txt

项目部署(方法一)

这是一种复杂的构建方案,目的是为了学习Dockerfile的使用 (不推荐使用方法部署)
—1)手动构建一个python 可用的执行容器
—2)线上部署不推荐
—3)可以使用官方镜像 直接发布,避免容器 映射 copy 的麻烦

1) 首先安装docker:

# 用 yum 安装并启动
yum  install docker -y && systemctl start docker

2) 下载自定义镜像需要用到的基础镜像:

# 这里以centos7为例
docker pull centos:centos7

3) 基础镜像已经准备好了,接下来准备好需要部署的环境服务,以及python项目:

# 安装下载工具
yum install wget 
### 创建 dockerfile 文件
mkdir dockerfile && cd dockerfile
### 下载 python(这里以3.7为例)
wget https://www.python.org/ftp/python/3.7.9/Python-3.7.9.tgz
### 下载 openssl (非必要操作)
### wget http://www.openssl.org/source/openssl-1.1.1.tar.gz

### 将 python 项目<复制/上传>到此目录
### cp ~/test.py .
### 以及 python 项目的依赖库
### cp ~/requirements.txt .
  1. 需要自定义docker镜像的大致内容准备好了,接下来编写dockerfile:
### 使用执行容器
FROM centos:centos7
### 设置镜像创建者名称
MAINTAINER Amewin
### 下载编译需要用到的软件 python
RUN yum install -y gcc gcc-c++ autoconf automake libtool make zlib* libffi-devel
### 下载编译需要用到的软件 openssl
RUN yum install -y zlib zlib-dev openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++

### 安装openssl
ADD openssl-1.1.1.tar.gz /usr/local/src
### 示例:将得到如下文件夹 /usr/local/src/openssl-1.1.1
# 等价如下命令
#COPY openssl-1.1.1.tar.gz /usr/local/src
#WORKDIR /usr/local/src
#RUN tar -zxvf openssl-1.1.1.tar.gz

### ADD 和 COPY 两个命令类似 都可以拷贝 文件或文件夹
### (只要不是压缩包 ADD COPY 没有本质区别,官方建议使用:COPY)
### ADD 解压到指定文件夹<文件夹不存在会自动创建> 注意:源压缩文件不会复制进images

### 设置切换目录
WORKDIR /usr/local/src/openssl-1.1.1
### 设置ssl环境变量
RUN ./config --prefix=$HOME/openssl shared zlib && make && make install
### RUN 执行指定命令 多条指令可以 && 连接
RUN source $HOME/.bash_profile
### 安装openssl end

### 将dockerfile目录下的python-3.7.3.tgz复制到docker容器内
COPY Python-3.7.9.tgz /usr/local/src
WORKDIR /usr/local/src
RUN tar -xf Python-3.7.9.tgz

### 类似于如下命令 但 /usr/local/src/Python-3.7.9.tgz 不存在
### ADD Python-3.7.9.tgz /usr/local/src

WORKDIR /usr/local/src/Python-3.7.9
### --with-openssl=$HOME/openssl (非必要参数)
RUN ./configure --prefix=/usr/local/python37 --with-openssl=$HOME/openssl && make && make install
### 设置环境变量
ENV PATH /usr/local/python37/bin:$PATH

### 将python项目复制到 /spider工作目录下
COPY ./proxy /spider
### 设置 /spider 为工作目录
WORKDIR /spider
### 下载 python 项目的依赖库
RUN pip3 install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com -r requirements.txt
### 在创建个爬取的数据存放的目录,这个需要根据自己代码里面设置的目录来创建,例如:
### VOLUME /data

### 更改openssl 避免 No module named _ssl 
### 必须安装编译后,在执行,该命令不然那报错
RUN echo '_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto' \
>> /usr/local/src/Python-3.7.9/Modules/Setup
### WORKDIR 切换目录
WORKDIR /usr/local/src/Python-3.7.9
### 进行安装
RUN  make && make install
### 修改 docker exec -it <id/imagesName> bash 进入默认路径
WORKDIR /spider
### 最后一步,运行docker镜像时运行自己的python项目
### 可以多个参数: CMD ["python3","a","main.py"]
CMD ["python3","main.py"]
### CMD 该方法是可被 /bin/bash -c "nohup ping -i 1000 www.baidu.com" 覆盖
###  docker run -d centos /bin/bash -c "nohup ping -i 1000 www.baidu.com"

### ENTRYPOINT ["python3","main.py"]
### ENTRYPOINT CMD 类似 但ENTRYPOINT 不允许 更改run 参数

更改COMMAND 启动参数

[[email protected] python2]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                  NAMES
cd0bc9ff8cf3        python1:v1          "python3 main.py"        4 hours ago         Up 4 hours                                                                 proxy1
be8263c3b5b3        python1:v1          "/bin/bash -c 'nohup…"   4 hours ago         Up 4 hours                                                                 proxy2

项目部署(方法二)

1)配置部署环境

# 获取python images 环境 根据实际需求选择
docker pull python:3.9
#docker pull python:3.8
#docker pull python:3.7
# 创建目录
mkdir -p /mydata/python-spider
cd /mydata/python-spider
touch Dockerfile
# 将运行项目copy到proxy内
mkdir proxy
vi Dockerfile
[[email protected] python-spider]# ls
Dockerfile  proxy
[[email protected] test]# vi Dockerfile

2)编写Dockerfile

# 使用python3.9镜像创建
FROM python:3.9
# 作者名称
MAINTAINER Amewin
# 将spider 拷贝到容器内/data 
# COPY (宿主机目录/文件) (容器目录)
COPY ./proxy /spider 
# 切换工作目录
WORKDIR /spider 
# 执行shell 下载相关依赖
RUN pip3 install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com -r requirements.txt
# 容器启动 run 启动参数
CMD ["python3","main.py"]

3)执行Dockerfile

### docker build -t 镜像名:版本号   镜像名:版本号 均为自定义  别忘了末尾的点“.”
docker build -t pythonspider:v1 .

### 通过 docker images命令就可以看到刚刚创建的镜像
docker images

### 运行
docker run -d --name spider  pythonspider:v1
### -d为后台运行,--name 后面设置容器名,-v 是目录共享,主机目录和docker容器内目录共享。创建dockerfile的时候,有这一句 VOLUME /data 就是作为共享目录使用的,“:”前的目录为主机目录,后面的目录为容器内目录。。。 最后一个参数 pythonspider:v1 镜像名

Dockerfile 部署Java 项目