Fastapi框架-(15)win10+Docker Desktop +pychram 連接Docker進行本地環境搭建實踐

2021-12-17 小兒來一壺枸杞酒泡茶

之前的實踐,主要是基於虛擬機的基礎上進行的,為了方便自己的開發,我還是需要再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)驗證docker

5)嘗試拉一個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

相關焦點

  • Docker環境配置指南!
    開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、 bare metal、OpenStack 集群和其他的基礎應用平臺。Docker通常用於如下場景:從頭編譯或者擴展現有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環境。
  • Docker 搭建 Django+Mariadb 環境
    不過,新人建議從頭到尾實踐,也不失為「笨辦法學 Docker 」的美談一樁。二、正文環境之「Docker-Mariadb」搭建參考:在 Mac 中直接安裝 Maridb(不推薦),Mac 中 MariaDB 資料庫的安裝步驟(https://www.jb51.net/article/93202.htm)首先,把你的宿主機 mac 或 linux 裝上 tree 命令。
  • 運維 - 實踐篇(二)- 基礎 Docker 開發環境搭建
    運維 - 實踐篇(二)- 基礎 Docker 開發環境搭建一、Linux 搭建基礎 Docker 環境1.
  • Docker 搭建 Redis Cluster 集群環境
    使用 Docker 搭建 Redis Cluster,最重要的環節就是容器通信的問題,這一塊我們在之前的文章中已經給大家解決了《Docker 網絡模式詳解及容器間網絡通信》,本篇文章主要練習使用多個容器完成 Redis Cluster 集群環境的搭建,順便為學習 Docker Compose 鋪鋪路。
  • 用Docker 搭建Web服務環境
    可是,事情往往不能按人們的意願進行的,你保不準會重裝下系統,也保不準會換一個新的環境。總之就是,你會偶爾需要重新安裝配置你的的開發環境!你可以回想一下,上一次安裝配置你的開發環境花費了多少時間,你所需要的 PHP 擴展是不是到運行時報錯了才記起來沒安裝的呢?還好,自從有了 Docker 之後,不用擔心開發環境的問題了。
  • 【長篇博文】Docker學習筆記與深度學習環境的搭建和部署(一)
    歡迎關注我的csdn:原始碼殺手docker學習筆記本文的最終目的是在docker下搭建深度學習環境,之前的所有操作是簡單對docker的一些實現流程進行記錄,不做更細緻的分析。以下是在搭建深度學習環境之前所做操作。
  • 搭建前端開發環境――docker篇
    推廣 | 令人窒息的獎品等你―2016最權威的全球開發者調研 一、解決痛點 免搭建前端靜態環境 分支切換,無需重新啟動編譯(package.json或gulpfile.js文件改變除外) nginx
  • 【長篇博文】Docker學習筆記與深度學習環境的搭建和部署(二)
    歡迎關注我的csdn:原始碼殺手我的CSDN上一篇文章:Docker學習筆記與深度學習環境的搭建和部署(一)https://blog.csdn.net/weixin_41194129/article/details/113823982【長篇博文】Docker學習筆記與深度學習環境的搭建和部署
  • 一個本地快速搭建 Jenkins 的方法
    今天運維小識堂就分享一個本地快速搭建 Jenkins 的方法。工具介紹現在容器當道,我們的搭建方法也是採用容器的方式搭建。本地容器搭建需要準備以下兩個工具:1.Docker Desktop[1]這個工具就不多介紹,之前一篇文章「如何快速搭建一個本地的 Kubernetes 環境?」也是依賴這個工具。2.
  • 現代程式設計師必須掌握的:Dockerfile 與 Compose 環境搭建學習筆記(二)
    Dockerfile 如何寫網絡上有非常多關於 Dockerfile 該如何寫的最佳實踐,我覺得有幾點特別重要:更多最佳實踐可以看這裡:https://yeasy.gitbooks.io/docker_practice/content/appendix/best_practices.html接下來以 Redis 的 Dockerfile 來聊一聊實際如何編寫
  • 【基礎教程】Docker基礎及應用
    而每一個中間環境都有自己微小的差別,Docker給應用提供了一個從開發到上線均一致的環境,讓代碼的流水線變得簡單不少。3. 提高開發效率不同的開發環境中,我們都想把兩件事做好。一是我們想讓開發環境儘量貼近生產環境,二是我們想快速搭建開發環境。
  • Docker —— 從入門到實踐
    後來,yeasy 根據最新Docker版本對內容進行了修訂和重寫,並增加了部分內容;與WaitFish協商,將所有內容開源,採用網際網路合作的方式進行創作和維護。本書既適用於具備基礎Linux知識的Docker初學者,也可供希望理解原理和底層實現的高級用戶參考。同時,本書中給出的實踐案例,可供在進行實際部署時借鑑。
  • 上手 Docker 容器數據管理
    」夢境「(容器環境)與」現實「(主機環境)的橋梁。我們可以試著把自己機器的桌面(或者其他路徑)掛載到容器中:docker run -it --rm -v ~/Desktop:/desktop alpine我們還是通過 -v 參數來進行配置,~/Desktop 是本機文件系統路徑
  • 如何開始docker - docker架構及創建容器
    應用程式(這裡面會包含鏡像作業系統的文件,但是這些只是依賴環境,裡面的內核根本就不會啟動,/boot目錄可以直接刪除掉)因此相對與傳統的虛擬機的架構,docker顯得很輕量級。容器的創建過程: 鏡像倉庫 ->pull 鏡像到本地 -> 本地鏡像 -> run容器 from 鏡像 -> 創建容器並執行程序->程序退出->容器退出1、dockerd服務端(守護進程),dockerd是docker的守護進程。
  • 用 Docker 構建 MySQL 主從環境
    前言本篇文章記錄我使用 docker-compose 以及 dockerfile 來構建基於 binlog 的 MySQL 主從環境。如果你嚴格按照文中的步驟進行配置,相信很快就可以搭建好一個基礎的 MySQL 主從環境。
  • Docker秒搭建php7+web運行生產環境
    這篇使用Docker搭建php7環境的文章需要一點入門知識。下面開始。環境首先安裝Docker,無論你是Windows還是Linux、MocOS都可以。安裝Docker自行百度。Docker鏡像源訪問https://hub.docker.com即可,它是鏡像大倉庫。
  • Docker極簡入門
    一、Docker概述Docker通過一個包括應用程式運行時所需的一切的可執行鏡像啟動容器,包括配置有代碼、運行時、庫文件、環境變量和配置文件等。1.文件系統隔離:每個容器都有自己得root文件系統。2.進程隔離:每個容器都運行再自己得進程環境中。
  • CoreOS實踐指南(七):Docker容器管理服務
    操作 docker 的方式與 systemctl、etcdctl 類似,需要由一個二級命令共同組成一個完整的命令。通過 docker pull 命令可以指定的網絡地址拉取鏡像到本地(如果指定的是名稱而不是網絡地址,則會在docker官方的鏡像倉庫裡面搜索,比如下面的兩個例子)。
  • 開源電商系統mall-swarm後端docker搭建過程記錄
    背景1、基於docker進行本地後端的搭建,docker未建私服,直接使用docker-hub;2、部分基礎組件在虛已經擬機上面通過非docker鏡像方式安裝:具體涉及MySQL、Redis、Mongo、Elasticsearch3、下載源碼:
  • 用docker搭建一個圖床服務
    但是好在我會搜索,找到了一個Chevereto工具,能夠方便在伺服器上搭建圖床,於是我就花了1個小時時間探索了一下,效果如下。我的環境為uname -aLinux VM_118_68_redhat 3.10.0-514.21.1.el7.x86_64 #1 SMP Thu May 25 17:04:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux下面的操作涉及docker,需要在root權限下執行如下操作