python生成requirement.txt文件
- pip
? 進入所需的python環(huán)境贮泞,在命令行里輸入pip freeze > ./requirements.txt
略水。
? 生成的requirements.txt里包含這個環(huán)境里下周的所有的python包眨业。
? 安裝:pip install -r path/requirements.txt
2.pipreqs
? 進入所需的python環(huán)境弱卡,在命令行里輸入
? pip install pipreqs
,
? pipreqs . --encoding=utf8 --force
喻旷。
? 生成的requirements.txt里只包代碼里import的python包冕房。
? 安裝:pip install -r path/requirements.txt
pip-compile
使用前需要安裝 pip install pip-tools 如果權(quán)限不夠膛壹,請 sudo
先在項目目錄中創(chuàng)建 requirements.in 文件赞厕,然后手動寫入包文件名稱
執(zhí)行 pip-compile requirements.in, 然后 cat requirements.txt-
結(jié)論
名稱 優(yōu)點 缺點 pip freeze 包含列表完全 不相關(guān)的依賴包也會包含進來 pipreqs 只會包含項目 imports 的包 包含列表不是很完全 pip-compile 精準(zhǔn)控制項目依賴包 需要手動操作收奔,不方便
docker容器化部署
- Win10下創(chuàng)建目錄文本烙无。選擇在項目目錄下創(chuàng)建docker目錄,分別新建三個文件:Dockerfile详拙,app.py帝际,equirements.txt
? Dockerfile(沒有后綴):一個文本文件,包含了一條條的指令(Instruction)饶辙,每一條指令構(gòu)建一層蹲诀,因此每一條指令的內(nèi)容,就是描述該層應(yīng)當(dāng)如何構(gòu)建畸悬。是創(chuàng)建鏡像的必須文件侧甫。
# 基于鏡像基礎(chǔ)
FROM python:3.6.8
# 復(fù)制當(dāng)前代碼文件到容器中 /app
WORKDIR /home/Event_detection_v2
COPY . /home/Event_detection_v2
# 設(shè)置代碼文件夾工作目錄 /app
EXPOSE 19952
# 安裝所需的包
RUN apt-get update \
&& apt-get install -y vim \
&& pip install pip -U \
&& pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \
&& pip install --upgrade pip \
&& pip install -r requirements.txt --default-timeout=1000
# Run app.py when the container launches
#nohup python -u test.py > test.out 2>&1 &,記錄控制臺輸出
CMD ["python", "app.py"]
2.app.py:python項目的源代碼蹋宦,這里測試的單個python文件披粟,如果是一個完整項目,可以將整個文件夾拷貝到這里冷冗。
- 生成鏡像守屉。本文采用的windows環(huán)境。
docker常用命令:
dockers ps -a # 查看所有鏡像蒿辙、容器
docker images # 查看所有鏡像
docker rm container_id #刪除容器
docker rmi image_id # 刪除鏡像
docker stop container_id # 停止容器
docker run container_id # 啟動容器
1)生成鏡像:docker build -t my_image:v1 -f Dockerfile .
命令中最后的一個點不要忘記拇泛,這里表示當(dāng)前目錄
docker build -t event-detection:v1.0 .
docker save -o event-detection-v1.0.tar event-detection:v1.0 #打包
2)導(dǎo)入并啟動程序滨巴,設(shè)置映射端口
docker load -i event_detection-v1.0.tar
docker run -p 19952:19952 -d event_detection:v1.0 --restart=always
3)啟動程序,設(shè)置映射端口(event_detect通過bash的方式)
docker run -itd -p 19952:19952 --name jsy_dev --restart=always
#-d 使容器在后臺運行俺叭。-i:打開容器的標(biāo)準(zhǔn)輸入恭取。-t:告訴docker為容器建立一個命令行終端。
docker run -it -d -p 19952:19952 --name jsy_dev jsy_dev:v1 /bin/bash
docker exec -it jsy_dev /bin/bash
python test.py
docker run -p 19952:19952 -d -v /home/event/config.ini:/home/Event_detect/config.ini event_detection:v6.0
? ?運行鏡像:docker run –p 19952:19952 –d my_images:v2.0 --restart=always
6)查看鏡像docker images
7)升級清華源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
8)windows端口映射問題:查看windows的docker的默認ip:docker-machine ip default
熄守,一般為192.168.99.100
蜈垮。
9)順序:鏡像docker rmi
-》容器docker rm
-》倉庫(我的是先docker rm,再docker rmi)
注:
docker load -i centos-latest.tar.xz #導(dǎo)入本地鏡像
docker save -o /opt/centos.tar #centos #導(dǎo)出鏡像
docker rmi 鏡像ID/鏡像名稱 #刪除指定ID的鏡像裕照,通過鏡像啟動容器的時候鏡像不能被刪除攒发,除非將容器全部關(guān)閉
docker rm 容器ID/容器名稱 #刪除容器
docker rm 容器ID/容器名-f #強制刪除正在運行的容器
docker commit CONTAINER_ID [REPOSITORY[:TAG]] #修改容器后重新提交為鏡像
docker commit --change='CMD ["python","api_run.py"]' a142a event_detection:v8.0
docker system df 查看Docker的磁盤使用情況
docker system prune 命令可以用于清理磁盤,刪除關(guān)閉的容器晋南、無用的數(shù)據(jù)卷和網(wǎng)絡(luò)惠猿,以及dangling鏡像(即無tag的鏡像)
docker system prune -a 命令清理得更加徹底,可以將沒有容器使用Docker鏡像都刪掉