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

2024年2月6日 星期二

Ngrok 舊版無法再使用,改用 V3版本

6年前就一直使用 ngrok 在 docker,昨天發現我的服務無法使用,測試 API程式發現沒有問題,最後 restart ngrok container發現訊息顯示版本太舊了,只能用新版的 ,官方文件有提供如何使用 docker 佈署指令Upgrading to ngrok Agent v3 的說明 

docker example (使用 docker ps 查看時可能看不到)

docker run -it -e NGROK_AUTHTOKEN=[your auth token] ngrok/ngrok:latest http https://localhost:5001 

 

基本上,使用免費版的每年都要更新一次新版本,可以在官網  version support policy上看到每個版本的資訊

2023年8月29日 星期二

我的 Line Bot 6歲了

 






寫 Line Bot 可以學到很多技術,讓我成長不少,資料的交換,程式的更新/佈署,資料庫的選擇及 Line 顯示方式,Open AI API串接等

當初寫了 2個 bot ,一個是分機查詢,另一個就是我的小鹿了,年下班時間的付出讓功能一直改進、增加,增加功能的同時,也在網路上獲得許多先進不吝嗇分享寶貴知識、看法,讓我這個低能力的韭菜也可以慢慢的成長,有更多知識吸收,吸收愈多就會再把它轉成有用的功能

6年下來讓我的心靈和實體方面都有成長,雖然離目標還有一大段,希望我的小鹿頭好壯壯,持續變強讓我快速找到好標的讓基礎持續變大,每年有 5%以上。 感恩。

2020年7月14日 星期二

[Docker] 將 Docker服務轉移至 synology DS918+

Celeron等級的 CPU、4G 的 RAM,要把原本放在 Server上的 docker服務改至 NAS實在是有點擔心是否有問題,但考量我的服務不多且相對簡單,舊的 NAS用了6年也想要換了,所以就買了 synology DS918+

程式改由放在 git repository,再放上 jenkins服務就可以把程式變成 image進而成 container,程式變動後一下子 container就會更新,目前用了快半年後覺得當初的決定還不賴,有興趣把 docker放在家裡可以試試這種方案,如果還是擔心效能的可以再買等級較高的 NAS




2019年7月22日 星期一

ASP.NET Core 2.2 Web API讀取 Request.Body時出現 BadHttpRequestException: Reading the request body timed out due to data arriving too slowly

參考 BadHttpRequestException: Reading the request body timed out due to data arriving too slowly

原本在 1.* Web API 的版本上執行正常的程式升級為 2.2時出現  BadHttpRequestException: Reading the request body timed out due to data arriving too slowly
出錯錯誤的程式碼為

StreamReader sr = new StreamReader(Request.Body);
string str = await sr.ReadToEndAsync();

專家找出的問題應該是 tread 的問題,我的環境是在 CentOS 7上,使用 docker佈署 Web API的程式,目前文章上有三種作法
第一種在 Startup.cs ConfigureServices 加上下列程式碼
services.Configure<KestrelServerOptions>(options =>{
options.Limits.MinRequestBodyDataRate = new MinDataRate(1, TimeSpan.FromMinutes(5));
options.Limits.MinResponseDataRate = new MinDataRate(1, TimeSpan.FromMinutes(5));
options.Limits.MaxRequestBodySize = 100000000;
});

2019年1月6日 星期日

ASP.Net Core 2.2 on Docker with certification

如果要使用自己的自制憑證和跑在 docker上,我的 dockerfile和 appsetting.json檔案參考如下:

docker file
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2

WORKDIR /app
 
ENV ASPNETCORE_URLS https://*:443
EXPOSE 443

COPY . /app

ENV ASPNETCORE_ENVIRONMENT production

ENTRYPOINT ["dotnet", "xxxxx.dll"]


appsetting.json
{
  "ConnectionStrings": {
      ................................................
  },
  "Logging": {
         .....................................
  },

  "Kestrel": {
    "Certificates": {
      "Default": {
        "Path": "certificate_file_name.pfx",
        "Password": "xxxxxxxxxxxxxxx"

      },
      "AllowInvalid": "true"
    }
  }
}

ASP.Net Core 2.2 在 Docker container使用 EF Core連結 SQL Server出現問題

參考:SqlException: Connection Timeout Expired. The timeout period elapsed during the post-login phase.

在 windows 環境下直接執行 asp.net core 2.2的程式透過 entity framework core連接 SQL server是沒有問題的情況,想說放在 docker上執行,但一直發生 timeout的情況,後來找到一篇文章提到要更新 SQL Server的 patch到最新的版本試試。

2018年6月7日 星期四

Boatswain beta - docker container log記錄器

Boatswain官網

在安裝 docker並已經有 container在服務的本機端安裝一個 boatswan服務,可以把 docker container log上傳至 Boaswain 雲端上,這樣就可以在這邊查詢到所有 docker log資訊

我的 docker跑在 CentOS上,可以參考 在 CentOS 安裝 Boatswain

安裝前需要在 Boatswain官網上先註冊一個帳號,取得一個 token,在安裝時必需把這個 token字串放到 etc/boatswain.yml內


2017年3月31日 星期五

ELK Stack Docker image 實作 docker log失敗,但成功設定 Elasticsearch 與 MongoDB連結

ELK Stack官網說明:An Introduction to the ELK Stack (Now the Elastic Stack)

好用的工具,當然也有 docker image,我所使用的是這一個 https://github.com/deviantony/docker-elk,這一個也可以參考 https://hub.docker.com/r/blacktop/elastic-stack/

原本我是想要實作把我所有 docker log放到 ELK Stack,所以有建一個 VM用來使用 ELK Stack,不與原本的 Docker VM在一起。

參考 Docker Logging with the ELK Stack — Part One
文章有提到可以使用三種方式把 docker logs 轉到 ELK Stack的 Logstash上
1.使用 Filebeat
2.使用 docker logging driver
3.使用 Logspout

作者使用 docker logging driver作範列,並修改 Logstash 的設定檔,應該會成功,但我實作的結果並沒有如預期,也不知道原因,使用 docker logs @LogstashContainerName,看起來是有連結的記錄在,但是在 Elasticsearch上並沒有相關 index產生。這部份想再用 Logspout再試看看。

在實作的過程中想到之前就想把 MongoDB資料與 Elasticsearch作連結,讓 Elasticsearch可以作 index,這次剛好有 Elasticsearch,所以就來實作看看。

MongoDB與 Elasticsearch連結的部份就要使用 mongodb-connector (https://github.com/mongodb-labs/mongo-connector)

connector要看不同版本的 Elasticsearch而下載,我的 ELK Stash內的 Elasticsearch為 5.*,所以要下載 5的版本,所以在 ELK Stash VM上安裝 connector,指令如下
pip install 'mongo-connector[elastic5]'

如果你的 MongoDB不是 Replica Set的話,記得要轉成 Replica Set,就算是一台也可以,不管你的 MongoDB是不是在 Docker上。而最好建立一個 mongodb 帳號是有 backup權限的,再用這個帳號讓 Elasticsearch可以連結,我就有遇過一家資訊服務公司,他所賣的產品有使用到 MongoDB,但完全不設帳號、宓碼,難怪最近 MongoDB被加密要錢。

最後要建立一個 config.json檔 https://github.com/mongodb-labs/mongo-connector/wiki/Configuration%20Options
這邊多花一些時間設定 MongoDB的位置,帳號、密碼,還有那些 document, collection需要被索引
最後再執行 mongo-connector  -c config.json
再看看 Elasticsearch是否有 index產生,再到 Kinaba設定就可以看到資料了




.Net Core 佈署到 docker上出現錯誤 The library 'libhostpolicy.so' required to execute the application was not found

使用 VS 2015建一個新 ASP.Net Core專案,再手動升級到 1.1後佈署到 docker時,出現無法正常執行的狀況,使用 docker logs @ConteainName時就出現 The library 'libhostpolicy.so' required to execute the application was not found錯誤訊息,可是之前也用同樣的方式也把另一個專案放在 docker上是沒有問題了,後來發現其原因可能發生在我把專案 package在使用 nuget升級時,原本
Microsoft.NetCore.App這個部份被改寫了,原本在 project.json的寫法如下:
 "Microsoft.NETCore.App": {
      "version": "1.0.1",
      "type": "platform"
    }

升級後就變成
 "Microsoft.AspNetCore.App": "1.1.0",  => type的設定就不見了

所以只要再把成如下寫法,把 type加回去即可
 "Microsoft.NETCore.App": {
      "version": "1.1.0",
      "type": "platform"
    }

參考文件
Every Other "dotnet run" command fails with `libhostpolicy.so` error #5059

2017年3月2日 星期四

Docker 分版本,要開始收錢了

目前有分 Docker Community Edition (CE)  和  Docker EE, CE應該是以前在使用的免費版本還是可以免費使用, EE在安全多了 features,而且要開始收費


目前大部份 docker是放在 CentOS上,新的 CE版要求要在 CentOS 7.3 64bit上才可以使用,說明如下: Docker Community Edition for CentOS

1. Set up the repository

Set up the Docker CE repository on CentOS:

sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

sudo yum makecache fast

2. Get Docker CE

Install the latest version of Docker CE on CentOS:

sudo yum -y install docker-ce
Start Docker:

sudo systemctl start docker

3. Test your Docker CE installation

Test your installation:


sudo docker run hello-world



其它版本的也可以在 CE的網頁上找的到。

2016年9月29日 星期四

Kafka Docker Images

目前有在 docker hub找到兩個 images都可以在 docker machine和 CentOS7上實作成功。

一個為 spotify/docker-kafka,這個把 zookeeper和 kafka整合在一個 images內,測試應該最適合測試或資料量不大使用。    另一個為 wurstmeister/kafka-docker,這一個是把 zookeeper和 kafka分開在不同的 image, 使用 docker compose並建立獨立的 Networking,可以建立多個 brokers,應該適合正式區上使用。


2016年8月2日 星期二

我的第 3個 Asp.Net Core Docker Image - 實作 Docker 1.12 Swarn Mode

利用 我的第二個 Asp.Net Core Docker Image 使用 SVN + Jenkins 的方式,首先先建立一個 docker machine, 再依據 Docker Conference Day 1的影片來實作 Docker Swarm Service Manager and Worker,一下子就成功了,非常容易、非常快速、簡單。大家可以試試。


2016年7月21日 星期四

我的第 2個 Asp.Net Core Docker Image 使用 SVN + Jenkins


 using docker

在 第一個 Asp.Net Core Docker Image的分享有用 Docker Tools for Visual Studio 2015 - Preview產生 Docker Image,但我想要作一點不一樣的事,目的很簡單,就是希望可以程式更新完之後,就可以完成自動產生 Docker image和建立 container,完成相關佈署。

依據這一本書的建議,利用 Jenkins來達到我想要的目的。相關的實作目前已完成第一步自動產生 docker file,再來就是要作實作建立 container的部份囉,等實作成功再來分享我的步驟。

真的不得不說, Docker是天上給予我最好的禮物了~~~

2016年7月14日 星期四

2016年7月7日 星期四

我的第 1個 Asp.Net Core Docker Image

解決了安裝  Docker Tools for Visual Studio 2015 - Preview的問題後,馬上把我的專案放到 docker,我採取的方式是在自己電腦上,所以本機要裝 docker toolbox,windows 10的用戶可以直接裝 docker for windows的版本,我參考的文件如下:

偵錯本機 Docker 容器中的應用程式
把 ASP.NET Core 應用程式裝進 Docker 裡 – 使用 Docker Tools for Visual Studio 2015

如果沒有 powershell的話,要先裝 Windows Management Framework
如果你跟我一樣使用 docker toolbox的話要先把一個 docker machine virtualbox VM先 start, ,而且在專案檔案 \Properties\Docker.props上給定 DockerMachineName的值才行

這樣應該就可以了~~~~





2016年3月31日 星期四

Docker for Mac and Windows Beta

文章來源:Docker for Mac and Windows Beta: the simplest way to use Docker on your laptop

之前在 windows上是使用 docker toolbox安裝 docker machine,再產生 virtualbox的 docker machine vm,以後就不用囉,有興趣的朋友可以試試

2016年2月4日 星期四

Docker Machine安裝 Redmine 後使用上的問題

原本使用 Docker Machine建一個 RancherOS 4.1的 VM,然後在 VM上再使用 docker建立 Redmine,參考如下:sameersbn/docker-redmine,之前安裝 MongoDB, ODOO也沒有發生過這樣的情況。

在安裝時都沒有任何問題,一開始也可以正常使用直到我把 docker machine作 stop再 start就無法開啟了,使用 docker logs就會看到 verify_gemfile_dependencies_are_found!': Could not find gem 'rails (= 4.2.0) ruby' in the gems..........的訊息。 參考 docker-redmine/issues/91

就算換了較舊的版本也是這樣,最後的作法就是放棄 Docker Machine的方式,直接建立一個 CentOS 7的 VM(install instruction),再安裝 Docker後,再利用 Docker安裝 Redmine就正常了,關掉 VM再重啟也不會發生開啟失敗的問題了。