顯示具有 docker 標籤的文章。 顯示所有文章
顯示具有 docker 標籤的文章。 顯示所有文章

2020年4月14日 星期二

Pycharm error : can't find '__main__' module in ... 解決方案


寫程式通常會選擇一套 IDE 軟體,

來協助開發軟體,

IDE 全名為 Integrated Development Environment,

中文名稱為 整合開發環境,

這些 IDE 軟體通常整合了許多工具,

例如 : git , sftp , docker 等等,

最重要的是要有自動完成的功能,

讓開發者能打上幾個字就能夠選擇要呼叫的函式或變數,

之前曾經介紹 Pycharm 建立專案,

而 Pycharm 就是 IDE 的一種。

新增 Python 專案後,

在執行 RUN / DEBUG 的時候,

必須先設定好 RUN / DEBUG configuration。

在 Pycharm 中它在右上角工具列中的第一個下拉式選單,

選擇 Edit configuations就能看到以下畫面,


如同紅色框取的部分,

如果單純指向專案路徑而沒指定檔名,

就會出現

can't find '__main__' module in ... 

這個錯誤的解決方法很簡單,


只要在 Script path 中,

補上要執行的 .py 檔案即可


雖然是一個小地方,

寫程式就是如此,

有時一個小地方失誤就會導致錯誤的產生





2019年4月19日 星期五

在Ubuntu16.04安裝Open edX 開發用devstack

之前介紹過

在Google Cloud Platform(GCP)快速安裝Open edX線上教學平台(Native installation),

也提過

在Ubuntu 16.04 快速安裝Open edX線上教學平台(Native installation)

除了Native安裝以外,

還有專為開發用的Devstack版本,

今天就要來教大家


在Ubuntu16.04安裝Open edX 開發用devstack



Devstack是在開發設計的Docker容器中部署Open edX平台,

運行Open edX平台希望藉由此版本提早發現並修復系統配置問題,

Devstack跟Native 版本不大一樣,

例如

在Devstack中禁用nginx和gunicorn,

改為使用Django的runserver代替,

原因無他,

它就是開發版本的Open edX,


1.
首先要到GitHub上下載原始碼

git clone https://github.com/edx/devstack


2.
接著切換到資料夾:

cd devstack

執行底下命令安裝需要的元件:

make requirements


3.
切換到需要的版本

git checkout open-release/hawthorn.master

並設定環境變數

export OPENEDX_RELEASE=hawthorn.master

並執行底下命令下載所需的檔案

make dev.checkout

make dev.clone

4.
底下命令會建立一個基本的開發環境於devstack中

make dev.provision

5.
到此已安裝完畢,

透過底下命令,

就能直接在本機上運行Open edX進行開發

make dev.up



由於此版本的Open edX是建立於Docker容器中,

故許多命令都要透過Docker,

之前有提到,

Docker安裝教學

有興趣的可再去觀看





一些實用的命令:



docker-compose restart


可以為


  • credentials 
  • discovery 
  • ecommerce 
  • lms 
  • edx_notes_api 
  • studio(就是cms)

透過此命令可重新啟動該service




若要更新devstack版本也很簡單,

將Open edX關閉後更新,

make down 

make pull 

更新完畢後再次啟動即可

make dev.up





各個service的URL為:


Credentials                     http://localhost:18150/api/v2/

Catalog/Discovery         http://localhost:18381/api-docs/

E-Commerce/Otto         http://localhost:18130/dashboard/

LMS                              http://localhost:18000/

Notes/edx-notes-api      http://localhost:18120/api/v1/

Studio/CMS                  http://localhost:18010/











2018年10月26日 星期五

Docker安裝教學

簡單的講 Docker 是輕量化的虛擬系統,

不在需要像舊有的虛擬系統那樣,

在每個虛擬系統的image都安裝一份作業系統,

這會導致虛擬機器佔用的資源較多,

而且映像檔檔案也比較大,

用了Docker就能輕鬆在每個提供Docker服務的機器上快速部屬,

不囉唆,

直接開始今天的主題:

Docker安裝教學


以Ubuntu為範例,

Ubuntu安裝Docker必須執行:


$ sudo apt-get install apt-transport-https
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
$ sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"
$ sudo apt-get update
$ sudo apt-get install -y lxc-docker
安裝完畢之後,

執行:

sudo service docker start

啟動Docker服務.


啟動服務時,

有時會遇到失敗狀況如下:


Failed to start docker.service: Unit docker.service is masked.


這時,

只要執行:

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service

這三行指令後再啟用即可




安裝完並啟用Docker服務之後,

與舊有的虛擬機器一樣,

Docker也需要映像檔執行.

可以從公有庫中下載映像檔:

sudo docker pull ubuntu:16.04


此命令等同於:

$ sudo docker pull registry.hub.docker.com/ubuntu:16.04

意思是從registry.hub.docker.com的倉庫ubuntu中下載Tag為12.04的映像檔




利用

sudo docker images 

列出目前現有的映像檔




執行

sudo docker run -t -i ubuntu:16.04 /bin/bash

就能在此映像檔中進行自訂操作.


若有修改內容想加到該映像檔中,

可透過

sudo docker commit -m "說明" -a "使用者訊息"  映像檔容器ID  新名稱:新TAG

將修改的內容加入並存為         新名稱:新TAG

例如:


sudo docker commit -m "test1" -a "xyaw" 2342df5eb54e ubuntu:test_version

執行完畢用sudo docker images觀看差異:


可以看到多出一個TAG為test_version的映像檔



Docker的應用範圍很廣,

端看使用者如何使用





安裝完確定能動之後,

嘗試把主機重開機在重新啟動Docker,

這裡有個詭異的情形是,

重開機之後要啟動Docker service會出現錯誤

解決方法如下:

rm /etc/docker/key.json
rm -rf /var/lib/docker/

(不過原有的映像檔全都會消失不見)