Bladeren bron

添加docker支持

Hui Chen 10 jaren geleden
bovenliggende
commit
5e6a9661c0
4 gewijzigde bestanden met toevoegingen van 52 en 4 verwijderingen
  1. 26 0
      docs/docker.md
  2. 4 0
      examples/codelab/Dockerfile
  3. 14 0
      examples/codelab/build_docker_image.sh
  4. 8 4
      examples/codelab/search_server.go

+ 26 - 0
docs/docker.md

@@ -0,0 +1,26 @@
+docker支持
+===
+
+## 从源代码build docker镜像
+
+1、请从[这里](https://github.com/huichen/wukong/blob/43f20b4c0921cc704cf41fe8653e66a3fcbb7e31/testdata/weibo_data.txt?raw=true)下载weibo_data.txt,放在testdata/目录下
+
+2、进入examples/codelab目录
+
+3、建立docker image
+
+	./build_docker_image.sh 
+
+4、运行docker container
+
+	docker run -d -p 8080:8080 unmerged/wukong-codelab
+
+在浏览器中打开 localhost:8080 即可打开搜索页面
+
+## 直接从docker hub下载镜像
+
+我已经建好了一个repo并上传到了docker hub,用下面的命令pull镜像
+
+	docker pull unmerged/wukong-codelab
+
+下载后运行镜像的方法和上面的相同。

+ 4 - 0
examples/codelab/Dockerfile

@@ -0,0 +1,4 @@
+FROM busybox
+EXPOSE 8080
+ADD / /
+CMD ./search_server --weibo_data=weibo_data.txt --dict_file=dictionary.txt --stop_token_file=stop_tokens.txt --static_folder=static

+ 14 - 0
examples/codelab/build_docker_image.sh

@@ -0,0 +1,14 @@
+#!/usr/bin/env bash
+
+set -x
+
+rm -rf docker
+mkdir docker
+CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o docker/search_server
+cp Dockerfile docker/
+cp static docker/ -r
+cp ../../data/dictionary.txt docker/
+cp ../../data/stop_tokens.txt docker/
+cp ../../testdata/weibo_data.txt docker/
+
+docker build -t unmerged/wukong-codelab -f docker/Dockerfile docker/

+ 8 - 4
examples/codelab/search_server.go

@@ -26,6 +26,10 @@ const (
 var (
 	searcher = engine.Engine{}
 	wbs      = map[uint64]Weibo{}
+	weiboData = flag.String("weibo_data", "../../testdata/weibo_data.txt", "微博数据文件")
+	dictFile = flag.String("dict_file", "../../data/dictionary.txt", "词典文件")
+	stopTokenFile = flag.String("stop_token_file", "../../data/stop_tokens.txt", "停用词文件")
+	staticFolder = flag.String("static_folder", "static", "静态文件目录")
 )
 
 type Weibo struct {
@@ -41,7 +45,7 @@ type Weibo struct {
 *******************************************************************************/
 func indexWeibo() {
 	// 读入微博数据
-	file, err := os.Open("../../testdata/weibo_data.txt")
+	file, err := os.Open(*weiboData)
 	if err != nil {
 		log.Fatal(err)
 	}
@@ -148,8 +152,8 @@ func main() {
 	gob.Register(WeiboScoringFields{})
 	log.Print("引擎开始初始化")
 	searcher.Init(types.EngineInitOptions{
-		SegmenterDictionaries: "../../data/dictionary.txt",
-		StopTokenFile:         "../../data/stop_tokens.txt",
+		SegmenterDictionaries: *dictFile,
+		StopTokenFile:         *stopTokenFile,
 		IndexerInitOptions: &types.IndexerInitOptions{
 			IndexType: types.LocationsIndex,
 		},
@@ -179,7 +183,7 @@ func main() {
 	}()
 
 	http.HandleFunc("/json", JsonRpcServer)
-	http.Handle("/", http.FileServer(http.Dir("static")))
+	http.Handle("/", http.FileServer(http.Dir(*staticFolder)))
 	log.Print("服务器启动")
 	log.Fatal(http.ListenAndServe(":8080", nil))
 }