之前的實踐,主要是基於虛擬機的基礎上進行的,為了方便自己的開發,我還是需要再win10安裝一個docker這樣也方便後續其他的服務管理。
其實這樣安裝起來,你可以把docker當做一個各自服務的的管家一樣了!!!哈哈
一、查看win10是否已經開啟了虛擬化:二、如果沒有開啟則需要開啟 並重啟:Hyper-V的啟用如下:
步驟1 - 控制面板 - 程序步驟2 - 啟用/關閉Windows功能步驟3 - 勾選Hyper-V選項 - 確定 - 重新啟動步驟4 docker-desktop官網下載安裝:下載地址 www.docker.com/products/do…
下載步驟:
1)安裝後遇到的問題:2)解決方案:3)重新再啟動docker:4)驗證docker5)嘗試拉一個redis的服務鏡像(命令)6)查看桌面本地的鏡像:7)運行一個redis容器(非命令)8)查看容器運行的相關的日誌:9)嘗試使用客戶端連接:10)驗證連接:步驟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"
複製代碼
通過上面的一系列的步驟後,就可以使用docker安裝各自服務了!感覺真的可以為所欲為的感覺!哈哈!以後安裝什麼服務,也方便很多了!不需要搞那麼多的配置!!!
三、開始配置我們的pycharm (注意需要專業版喲)PS:我的pycharm版本是18版滴
步驟1 開啟docker服務埠:可以的話最好也重啟一下
步驟2 配置新的解析器連接docker服務:下面出現了一個docker的圖標
步驟3 選擇docker,開始選服務上的鏡像:拉一個python環境的鏡像,後續所有的人可以都基於這個鏡像的基礎進行開發,就可以保持環境的一致性了!
拉一個python環境的鏡像,後續所有的人可以都基於這個鏡像的基礎進行開發,就可以保持環境的一致性了!甚至於我們的python直接運行到linux也沒問題,我拉一個linux鏡像,裡面配置或安裝我們的python環境即可!!!
比如我這裡,可以搭建一個linxu環境的容器來跑我們的fastapi項目,那麼當然我們的就系構建一個鏡像咯!
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的鏡像:
然後等待構建吧!
出現錯誤:
修改,需要複製我們的文件到裡面進行安裝:
新增: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
複製代碼
但是還是構建的過程還是會有錯:
提示:
後來乾脆不從豆瓣下載了:
去了之後出現新的一個包安裝不了的
這個包很詭異什麼鏡像下都安裝不了:
psycopg2==2.9.1
複製代碼
去除上面這個之後就OK了!
步驟4 查看生成新的鏡像,開始回到我們的解釋器選擇界面:然後等待連接:
貌似這地方一直連接不上!!後來發現原來,docker還需要再下載其他的鏡像:
鏡像文件大就算了!還連不上!!!刪除一下生成新的鏡像
更換新的小的鏡像驗證測試新的鏡像:
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
複製代碼
然後再重新的構建!
忘記了!yum命令沒有去處!需要去除一下!再進行重構後!
啟動一個容器嘗試進去測試驗證看看環境:
提示:
又忘記了!這個基礎鏡像包含了啟動我們的服務了!我們現在只是需要一個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
複製代碼
然後執行構建:
運行一個實例驗證一下當前的python環境:
再連接我們的pycharm試一試
這就奇葩了 一直還是:
該用另一種方式連結:
步驟5 卡脖子了!更換新的pycharm版本使用最新2021.2的版本再次的進行連接:
有新的工具鏡像生成:
好傢夥終於可以了!!!確定後等待後臺進程處理!!
步驟6 運行示例驗證訪問:訪問失敗!!!!
排查問題:(1)查看容器日誌:
當我們的右鍵運行我們的本地項目的時候,服務啟動的是容器內的埠號:
所以我們的可以得到信息:http://127.0.0.1:8569/ 這個是容器內的埠號,不是我們的本地,因為我們的本地還沒也和容器的這個8569進行埠的映射,所以是訪問不到服務滴!
通過我們的進入到容器裡面訪問地址可以驗證:
步驟7 配置運行鏡像容器(1)修改配置信息
(2)找到容器運行配置選項
添加成功後查看最終啟動man.py的時候回執行的命令
(3)注意修改我們的啟動程序HOTS, 修為為0.0.0.0 如果這裡你使用127.0.0.1表示的只允許容器內的進行訪問了!!!所以不行滴喲!
步驟8 再次啟動驗證再次訪問接口:
恭喜你可以了!!!哇咔咔!
步驟7 使用鏡像的方式運行配置運行容器相關信息(這個暫時有問題,後續補充)
總結:以上僅僅是個人結合自己的實際需求,做學習的實踐筆記!如有筆誤!歡迎批評指正!感謝各位大佬!
結尾END簡書:www.jianshu.com/u/d6960089b…
掘金:juejin.cn/user/296393…
公眾號:微信搜【小兒來一壺枸杞酒泡茶】
小鍾同學 | 文 【原創】【歡迎一起學習交流】| QQ:308711822