Docker本地封装+部署到服务器流程

您所在的位置:网站首页 docker是服务器吗 Docker本地封装+部署到服务器流程

Docker本地封装+部署到服务器流程

2023-11-06 08:10| 来源: 网络整理| 查看: 265

Docker封装+部署到服务器流程 2021/09/24新增 结语: 写这篇文章主要是为了证明自己学会了Docker本地封装+部署到服务器的行为。 本文以下面配置进行说明: 环境:Ubuntu 软件:Django2.2.4 语言:Python3

在本地拉取镜像 此步骤是从docker hub里拉取,我找的是最纯净一ubuntu镜像(27M左右) docker pull ubuntu

当然,你也可以按需拉取。

运行基础镜像到容器中 运行这个镜像是为了下一步安装环境。 docker run -it ubuntu /bin/bash

上面的命令没有这么好,因为Docker会随机产生一个名字,不过这个容器在后面对我来说并没有用,反正我会把它删除掉的。 当然提供一下好的命令。

docker run --name yourname -it ubuntu /bin/bash 操作安装各种环境 这一步是各种安装环境,由于我一开始选的是最小ubuntu,所以那些软件目录都没有,这个都得安装,后面你会发现有各种方便环境的镜像大概400M左右。 sudo apt-get update apt install tzdata # 安装时区 apt-get install python3 # 安装完python3后,你也可以链接命名,但我比较喜欢写python3没有去做 apt-get install python3-pip pip3 install Django==2.2.4 # 或可以使用一些国内源 pip3 install Django==2.2.4 -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com # 接下来这个是我的项目需求,各位请按需安装 pip3 install requests

以下这个重点注意

apt-get install libmysqlclient-dev # ubuntu的一定要记得安装这个 # 不然你下一步会报个错误 pip3 install mysqlclient -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

报错展示

root@xxxxxx:/# pip3 install mysqlclient -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.co m Looking in indexes: http://mirrors.aliyun.com/pypi/simple/ Collecting mysqlclient Downloading http://mirrors.aliyun.com/pypi/packages/3c/df/59cd2fa5e48d0804d213bdcb1acb4d08c403b61c7ff7ed4dd4a6a2deb3f7/mysqlclient-2.0.3.tar.gz (88 kB) |████████████████████████████████| 88 kB 1.3 MB/s ERROR: Command errored out with exit status 1: command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-v7z3p1vz/mysqlclient/setup.py'"'"'; __file__='"'"'/tmp/pip-install-v7z3p1vz/mysqlclient/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-v7z3p1vz/mysqlclient/pip-egg-info cwd: /tmp/pip-install-v7z3p1vz/mysqlclient/ Complete output (15 lines): /bin/sh: 1: mysql_config: not found /bin/sh: 1: mariadb_config: not found /bin/sh: 1: mysql_config: not found Traceback (most recent call last): File "", line 1, in File "/tmp/pip-install-v7z3p1vz/mysqlclient/setup.py", line 15, in metadata, options = get_config() File "/tmp/pip-install-v7z3p1vz/mysqlclient/setup_posix.py", line 70, in get_config libs = mysql_config("libs") File "/tmp/pip-install-v7z3p1vz/mysqlclient/setup_posix.py", line 31, in mysql_config raise OSError("{} not found".format(_mysql_config_path)) OSError: mysql_config not found mysql_config --version mariadb_config --version mysql_config --libs ---------------------------------------- ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output. 提交生成镜像 提交一版镜像,当你提交完这版镜像后,以后是相同配置项目可以从这一版上去封装。 docker ps -a # 找到你配置好的那个容器 docker commit -m='python3+django2' -a='Dish' containerid imagename:tag # will do many time # 其中上面命令里的containerid需要你找到改成你的 # 其中上面命令imagename:tag是你的自定义命令,以后你找本地的镜像就是靠它了。 编写Dockerfile文件 在你的项目文件里编Dockerfile,这里只是一种方法,就是把你的项目封装到镜像里,这个是官方文档的推荐。 还有一种方法,把项目放到实体机里,容器连接到实体机的文件夹,这种方法似乎方便项目的修改,使用在不成熟的项目代码,或需要不段进版的代码情况。 如果有生之年有机会,会再写一篇文章讲那个吧。 这里的做法是把你的项目封装到镜像里。 FROM ubuntu:v0.1 WORKDIR /MyProject COPY MyProject . EXPOSE 8001 CMD python3 manage.py runserver 0.0.0.0:8001 > log.log

基中:

FROM ———— 你要选择的镜像,就是你上一步自定义的,如果你不记得,请docker images一下 WORKDIR ———— 项目路径,在进入容器后的位置 COPY dir1 . ———— 注意,这一行是把项目复制进去。再注意一下,它是以Dockerfile所在的地方为当前目录,是COPY的动作是你选定目录的所有文件。对于这个项目,Dockerfile没有与manege.py在同一目录,会导致找不到文件。要注意与CMD的搭配。 EXPOSE ———— 你要暴露出的端口,指的是容器的端口。 CMD ———— 启动容器要执行的命令。 编译生成image 使用命令行进入你的项目中有Dockerfile的路径,就当作你们都懂的,不展示出来了。 编译。 docker build -t yourimagename:tag .

注意结尾是一个点的,代表你编译当前目录。

将image运行到容器作测试 docker run --name yournewname -d -p 8000:8001 yourimagename:tag

在本地运行一下看有没有问题,如果有问题,一运行就会退出,导致你在docker ps看不到它。你需要用docker ps -a才看得到它EXIT的状态。 这时我们可以看看他的log信息。

docker logs yournewname # yournewname 指的是你的容器名 将image打包 当在本地运行没有问题,你就可以打包了。 docker save yourimagename:tag > yourimagename.tar

传输到你的服务器 就你的喜好去做,不解释了。

在服务器上加载你的image 当把tar包传输上服务器后,找到它,使用命令

docker load


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3