FileZilla做网站,程序开发的难点,网站301跳转,wordpress所有数据迁移两个奇技淫巧#xff0c;将 Docker 镜像体积减小 99%
使用Docker运行程序 Docker的基本使用(部署python项目) 一、准备项目 我写的是一个爬取某ppt网站的代码#xff0c;就一个ppt1.py是爬虫#xff0c;然后#xff0c;ppts是存放下载的ppt的 二、准备requirement.txt文件…两个奇技淫巧将 Docker 镜像体积减小 99%
使用Docker运行程序 Docker的基本使用(部署python项目) 一、准备项目 我写的是一个爬取某ppt网站的代码就一个ppt1.py是爬虫然后ppts是存放下载的ppt的 二、准备requirement.txt文件 这个是需要哪些python库支持写好 三、准备Dockerfile文件 需要一个名为Dockerfile的文件没有后缀这个创建docker镜像的配置文件 FROM python:3.6
ENV PATH /usr/local/bin:$PATH
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD python ppt1.py FROM需要什么环境 ENV修改path即增加/usr/local/bin这个环境变量 ADD将本地代码放到虚拟容器中它有两个参数第一个是 . 代表本地当前路径第二个参数是/code代表虚拟容器中的路径即将本地项目的所有内容放到虚拟容器的/code目录下以便在虚拟容器中运行代码 WORKDIR指定工作目录也就是刚才的/code在虚拟容器中的目录 RUN执行某些环境准备工作docker容器中只有python3环境还需要python的库这里安装那些库 CMD运行项目的命令行命令 四、开始创建镜像 docker build -t pptdemo:latest . 这样应该就没错了最后报了个警告有时间去了解了解... $ docker build -t pptdemo:latest .
Sending build context to Docker daemon 23.55kB
Step 1/6 : FROM python:3.6--- 55fb8aca33df
Step 2/6 : ENV PATH /usr/local/bin:$PATH--- Using cache--- 97e82715b8ee
Step 3/6 : ADD . /code--- 9d2d253015ee
Step 4/6 : WORKDIR /code
Removing intermediate container 25ccdad420a0--- ec462b723417
Step 5/6 : RUN pip install -r requirements.txt--- Running in 83e607d0bc06
Collecting requests (from -r requirements.txt (line 1))Downloading https://files.pythonhosted.org/packages/7d/e3/20f3d364d6c8e5d2353c72a67778eb189176f08e873c9900e10c0287b84b/requests-2.21.0-py2.py3-none-any.whl (57kB)
Collecting pyquery (from -r requirements.txt (line 2))Downloading https://files.pythonhosted.org/packages/09/c7/ce8c9c37ab8ff8337faad3335c088d60bed4a35a4bed33a64f0e64fbcf29/pyquery-1.4.0-py2.py3-none-any.whl
Collecting idna2.9,2.5 (from requests--r requirements.txt (line 1))Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
Collecting chardet3.1.0,3.0.2 (from requests--r requirements.txt (line 1))Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
Collecting certifi2017.4.17 (from requests--r requirements.txt (line 1))Downloading https://files.pythonhosted.org/packages/9f/e0/accfc1b56b57e9750eba272e24c4dddeac86852c2bebd1236674d7887e8a/certifi-2018.11.29-py2.py3-none-any.whl (154kB)
Collecting urllib31.25,1.21.1 (from requests--r requirements.txt (line 1))Downloading https://files.pythonhosted.org/packages/62/00/ee1d7de624db8ba7090d1226aebefab96a2c71cd5cfa7629d6ad3f61b79e/urllib3-1.24.1-py2.py3-none-any.whl (118kB)
Collecting lxml2.1 (from pyquery--r requirements.txt (line 2))Downloading https://files.pythonhosted.org/packages/5d/d4/e81be10be160a6323cf5f29f1eabc9693080cb16780a2e19c96091ee37ee/lxml-4.3.0-cp36-cp36m-manylinux1_x86_64.whl (5.7MB)
Collecting cssselect0.7.9 (from pyquery--r requirements.txt (line 2))Downloading https://files.pythonhosted.org/packages/7b/44/25b7283e50585f0b4156960691d951b05d061abf4a714078393e51929b30/cssselect-1.0.3-py2.py3-none-any.whl
Installing collected packages: idna, chardet, certifi, urllib3, requests, lxml, cssselect, pyquery
Successfully installed certifi-2018.11.29 chardet-3.0.4 cssselect-1.0.3 idna-2.8 lxml-4.3.0 pyquery-1.4.0 requests-2.21.0 urllib3-1.24.1
Removing intermediate container 83e607d0bc06--- 22244632da67
Step 6/6 : CMD python ppt1.py--- Running in c5ff77a9f680
Removing intermediate container c5ff77a9f680--- 07cfec786f1a
Successfully built 07cfec786f1a
Successfully tagged pptdemo:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have -rwxr-xr-x permissions. It is recommended to double check and reset permissions for sensitive files and directories. 继续输入代码查看是否创建成功 五、运行 docker run pptdemo 我成功了 顺便一提如果我们需要暴露接口比如搭了一个网站需要暴露端口因为暴露的是容器的端口需要访问宿主机能访问到所以需要做端口映射 可以参考https://www.cnblogs.com/jie-fang/p/7920863.html docker run -d -p 8080:80 nginx 比如这样就将宿主机的8080端口映射到容器的80端口访问localhost:8080就可以了 注意windows下不同因为docker需要Linux环境其实在windows上开了一个虚拟机 dcoker-machine ip default 可以显示出ip为多少这样需要利用这个ip才能访问容器一般是192.168.99.100那么192.168.99.100:8080即可访问到接口不然就是你配错了 进入docker容器: docker exec -i -t pptdemo /bin/bash 查看docker容器运行日志: docker logs pptdemo 六、关于部署 1.push到dockerhub然后在装好docker的服务器上pull下来镜像run即可 2.复制源代码到服务器在装好docker的服务器上重新执行 buildrun 3.将image导出复制到装好docker的服务器载入imagerun即可 1.push到dockerhub 优点在于推送到dockerhub只要有网即可方便推拉缺点是推送特别慢而且要反复推我正在查有没方法换源之类。。。 1.在dockerhub注册帐号 2.新建一个库我的叫pptdemo 3.命令行登录 docker login -u happycodes 4.tag打标签 docker tag pptdemo:latest happycodes/pptdemo:latest 5.push docker push happycodes/pptdemo 2、复制源码到服务器 这个比较简单就类似于再构建一遍缺点是又要下依赖又要重新构建比较慢 3、导出image拷贝image载入image 比较合适的方法构建一遍复制多遍即可 #将镜像存储
docker save nginx:latest ./nginx.tar
docker save xxxxx(image id) ./nginx.tar#导入镜像文件 docker load --input ./nginx.tar
#通过符号的方式来导入 docker load ./nginx.tar 七、可选、删除多余的容器和镜像
容器不停不能删对应的image
关于容器 $ docker ps // 查看所有正在运行容器
$ docker stop containerId // containerId 是容器的ID$ docker ps -a // 查看所有容器 $ docker ps -a -q // 查看所有容器ID
$ docker stop $(docker ps -a -q) // stop停止所有容器 $ docker rm $(docker ps -a -q) // remove删除所有容器 关于images ?123docker images // 查看当前有些什么imagesdocker rmi image id // 删除指定id的imagedocker rmi $(docker images -q) // 要删除全部image的话 八、使用docker-compose部署
简单说说docker-compose他是python写的为了解决docker部署的繁杂配置和多容器部署的配置问题例如需要做容器端口和宿主机端口映射配置容器ip等。
pip install docker-compose 即可
使用很简单编写 docker-compose.yml 文件即可例如我的代理池需要配置映射端口 原文地址[https://www.cnblogs.com/zmdcomeon/archive/2019/11/05/11801443.html](https://www.cnblogs.com/zmdcomeon/archive/2019/11/05/11801443.html)