Fastapi框架-(15)win10+Docker Desktop +pychram 连接Docker进行本地环境搭建实践

一、查看win10是否已经开启了虚拟化:

image.png

image.png

二、如果没有开启则需要开启 并重启:

Hyper-V的启用如下:

步骤1 – 控制面板 – 程序

步骤2 – 启用/关闭Windows功能

步骤3 – 勾选Hyper-V选项 – 确定 – 重新启动

步骤4 docker-desktop官网下载安装:

下载地址
www.docker.com/products/do…

下载步骤:

image.png

image.png

1)安装后遇到的问题:

image.png

image.png

image.png

2)解决方案:

image.png

3)重新再启动docker:

image.png

image.png

4)验证docker

image.png

5)尝试拉一个redis的服务镜像(命令)

image.png

6)查看桌面本地的镜像:

image.png

7)运行一个redis容器(非命令)

image.png

image.png

image.png

8)查看容器运行的相关的日志:

image.png

image.png

9)尝试使用客户端连接:

image.png

10)验证连接:

image.png

image.png

步骤5 配置镜像加速:

可以用于加上的一些镜像云:

"https://xxx.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"https://reg-mirror.qiniu.com",
"https://dockerhub.azk8s.cn",
"https://mirror.ccs.tencentyun.com"
复制代码

image.png

image.png

image.png

通过上面的一系列的步骤后,就可以使用docker安装各自服务了!感觉真的可以为所欲为的感觉!哈哈!
以后安装什么服务,也方便很多了!不需要搞那么多的配置!!!

三、开始配置我们的pycharm (注意需要专业版哟)

PS:我的pycharm版本是18版滴

步骤1 开启docker服务端口:

image.png

可以的话最好也重启一下

image.png

步骤2 配置新的解析器连接docker服务:

image.png

image.png

image.png

下面出现了一个docker的图标

image.png

image.png

步骤3 选择docker,开始选服务上的镜像:

拉一个python环境的镜像,后续所有的人可以都基于这个镜像的基础进行开发,就可以保持环境的一致性了!

image.png

拉一个python环境的镜像,后续所有的人可以都基于这个镜像的基础进行开发,就可以保持环境的一致性了!甚至于我们的python直接运行到linux也没问题,我拉一个linux镜像,里面配置或安装我们的python环境即可!!!

比如我这里,可以搭建一个linxu环境的容器来跑我们的fastapi项目,那么当然我们的就系构建一个镜像咯!

image.png
dockerfile文件内容:

PS:Dockerfile文件内容参考来源:blog.csdn.net/jclian91/ar…

详细内容:

FROM centos:7.2.1511

# author label
LABEL maintainer="xiaozhong"

# install related packages
ENV ENVIRONMENT DOCKER_PROD
RUN cd / && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && yum makecache \
    && yum install -y wget aclocal automake autoconf make gcc gcc-c++ python-devel mysql-devel bzip2 libffi-devel epel-release \
    && yum clean all

# install python 3.7.0
RUN wget https://npm.taobao.org/mirrors/python/3.7.0/Python-3.7.0.tar.xz \
    && tar -xvf Python-3.7.0.tar.xz -C /usr/local/ \
    && rm -rf Python-3.7.0.tar.xz \
    && cd /usr/local/Python-3.7.0 \
    && ./configure && make && make install

# install related packages
RUN yum install -y python-pip \
    && yum install -y python-setuptools \
    && mkdir -m 755 -p /etc/supervisor/conf.d \
    && yum install -y supervisor \
    && pip3 install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
    && pip3 install setuptools==33.1.1 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
    && pip3 install --no-cache-dir --default-timeout=100  -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple\
    && yum clean all

# expost port
EXPOSE 15731
复制代码

开始构建一个linux+py3的镜像:

image.png

然后等待构建吧!

image.png

出现错误:

image.png

修改,需要复制我们的文件到里面进行安装:

新增:COPY requirements.txt ./

新的内容:

FROM centos:7.2.1511

# author label
LABEL maintainer="xiaozhong"

# install related packages
ENV ENVIRONMENT DOCKER_PROD
RUN cd / && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && yum makecache \
    && yum install -y wget aclocal automake autoconf make gcc gcc-c++ python-devel mysql-devel bzip2 libffi-devel epel-release \
    && yum clean all

# install python 3.7.0
RUN wget https://npm.taobao.org/mirrors/python/3.7.0/Python-3.7.0.tar.xz \
    && tar -xvf Python-3.7.0.tar.xz -C /usr/local/ \
    && rm -rf Python-3.7.0.tar.xz \
    && cd /usr/local/Python-3.7.0 \
    && ./configure && make && make install

COPY requirements.txt ./

# install related packages
RUN yum install -y python-pip \
    && yum install -y python-setuptools \
    && mkdir -m 755 -p /etc/supervisor/conf.d \
    && yum install -y supervisor \
    && pip3 install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
    && pip3 install setuptools==33.1.1 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
    && pip3 install --no-cache-dir --default-timeout=100  -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple\
    && yum clean all

# expost port
EXPOSE 15731
复制代码

但是还是构建的过程还是会有错:

提示:

image.png

后来干脆不从豆瓣下载了:

image.png

image.png

去了之后出现新的一个包安装不了的

image.png

这个包很诡异什么镜像下都安装不了:

psycopg2==2.9.1
复制代码

去除上面这个之后就OK了!

image.png

步骤4 查看生成新的镜像,开始回到我们的解释器选择界面:

image.png

image.png

image.png

image.png

然后等待连接:

image.png

貌似这地方一直连接不上!!
后来发现原来,docker还需要再下载其他的镜像:

image.png

镜像文件大就算了!还连不上!!!删除一下生成新的镜像

image.png

更换新的小的镜像验证测试

新的镜像:

FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7
# author label
LABEL maintainer="xiaozhong"

COPY requirements.txt ./

RUN pip3 install -r requirements.txt \
    && yum clean all
    
# expost port
EXPOSE 15731
复制代码

然后再重新的构建!

image.png

忘记了!yum命令没有去处!需要去除一下!再进行重构后!

image.png

启动一个容器尝试进去测试验证看看环境:

提示:

image.png

又忘记了!这个基础镜像包含了启动我们的服务了!我们现在只是需要一个python环境!这个!!!!尴尬了!

再来一次!!

最新的镜像文件:

##############################################
# 基于centos7构建python3运行环境
# 构建命令: 在Dockerfile文件目录下执行 docker build -t python:37 .
# 容器启动命令: docker run -itd --name python --restart always --privileged=true -v /root/dockers/python:/root/python -v /root/dockers/python/cron:/var/spool/cron python:37 /usr/sbin/init
# 进入容器:docker exec -it python /bin/bash
##############################################
FROM centos:7.6.1810
MAINTAINER mioshu # 指定作者信息
RUN set -ex \
    # 预安装所需组件
    && yum install -y wget tar libffi-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make initscripts \
    && wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz \
    && tar -zxvf Python-3.7.0.tgz \
    && cd Python-3.7.0 \
    && ./configure prefix=/usr/local/python3 \
    && make \
    && make install \
    && make clean \
    && rm -rf /Python-3.7.0* \
    && yum install -y epel-release \
    && yum install -y python-pip

COPY requirements.txt ./

# 设置默认为python3
RUN set -ex \
    # 备份旧版本python
    && mv /usr/bin/python /usr/bin/python27 \
    && mv /usr/bin/pip /usr/bin/pip27 \
    # 配置默认为python3
    && ln -s /usr/local/python3/bin/python3.7 /usr/bin/python \
    && ln -s /usr/local/python3/bin/pip3 /usr/bin/pip
# 修复因修改python版本导致yum失效问题
RUN set -ex \
    && sed -i "s#/usr/bin/python#/usr/bin/python2.7#" /usr/bin/yum \
    && sed -i "s#/usr/bin/python#/usr/bin/python2.7#" /usr/libexec/urlgrabber-ext-down \
    && yum install -y deltarpm
# 基础环境配置
RUN set -ex \
    # 修改系统时区为东八区
    && rm -rf /etc/localtime \
    && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && yum install -y vim \
    # 安装定时任务组件
    && yum -y install cronie
# 支持中文
RUN yum install kde-l10n-Chinese -y
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
# 更新pip版本
RUN pip install --upgrade pip

RUN yum install -y python-pip \
    && yum install -y python-setuptools \
    && mkdir -m 755 -p /etc/supervisor/conf.d \
    && yum install -y supervisor \
    && pip install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
    && pip install setuptools==33.1.1 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \
    && pip install -r requirements.txt \
    && yum clean all

ENV LC_ALL zh_CN.UTF-8
复制代码

然后执行构建:

image.png

运行一个实例验证一下当前的python环境:

image.png

image.png

再连接我们的pycharm试一试

image.png

这就奇葩了 一直还是:

image.png

该用另一种方式链接:

image.png

步骤5 卡脖子了!更换新的pycharm版本

使用最新2021.2的版本再次的进行连接:

image.png

有新的工具镜像生成:

image.png

好家伙终于可以了!!!确定后等待后台进程处理!!

image.png

步骤6 运行示例

image.png
验证访问:访问失败!!!!

排查问题:
(1)查看容器日志:

image.png

image.png

image.png

当我们的右键运行我们的本地项目的时候,服务启动的是容器内的端口号:

所以我们的可以得到信息:http://127.0.0.1:8569/ 这个是容器内的端口号,不是我们的本地,因为我们的本地还没也和容器的这个8569进行端口的映射,所以是访问不到服务滴!

通过我们的进入到容器里面访问地址可以验证:

image.png

步骤7 配置运行镜像容器

(1)修改配置信息

image.png

(2)找到容器运行配置选项

image.png

image.png

添加成功后查看最终启动man.py的时候回执行的命令

image.png

(3)注意修改我们的启动程序HOTS, 修为为0.0.0.0
如果这里你使用127.0.0.1表示的只允许容器内的进行访问了!!!所以不行滴哟!

image.png

步骤8 再次启动验证

image.png

再次访问接口:

image.png

恭喜你可以了!!!哇咔咔!

步骤7 使用镜像的方式运行

配置运行容器相关信息(这个暂时有问题,后续补充)

image.png

image.png

image.png

image.png

总结:

以上仅仅是个人结合自己的实际需求,做学习的实践笔记!如有笔误!欢迎批评指正!感谢各位大佬!

结尾

END

简书:www.jianshu.com/u/d6960089b…

掘金:juejin.cn/user/296393…

公众号:微信搜【小儿来一壶枸杞酒泡茶】

小钟同学 | 文 【原创】【欢迎一起学习交流】| QQ:308711822

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享