林老師給我們每個入職TW的童鞋都帶來一套升級computer配置的裝備(固態(tài)硬盤SSD择懂,8G內存條)開心侦厚!but 意味著電腦又要回到解放前盯质,開始重裝系統,各種裝機配置彪标,想想也想哭著笑倍权!
重新裝系統后,需要重新裝機捞烟,參照http://thoughtworks-academy.github.io/linux-guide/zh-hans/
我在裝機過程遇到問題請參考:http://www.reibang.com/p/82ad51275fdf
安裝docker
- 參考官網:https://docs.docker.com/engine/installation/linux/ubuntulinux/
(執(zhí)行命令到:sudo docker run hello-world薄声,結果出現“hello...docker...“即可) - 拷貝images文件夾, 下載load-images.sh文件到images下面
下載load-images.sh后可以看到images文件夾里的load-image.sh是白色的题画,綠色才是可執(zhí)行的
所以在命令行輸入:
$chmod 777 [load-image.sh](http://load-image.sh/)
(7=4+2+1 4 可讀 2 可寫 1 可執(zhí)行第一個7是用戶的權限默辨,第2個是用戶組的權限,第3個是其他的權限 )
然后就可以看到load-image.sh變成綠色的了接著執(zhí)行:
$ ./load-image.sh
或者執(zhí)行:$docker load -i assembly_jenkins.tar
如果上面的命令執(zhí)行出錯:
錯誤為:“ERROR presscsssing 苍息。缩幸。。Invial tar header 竞思。表谊。。盖喷”欤”
或者執(zhí)行腳本出錯(其他錯誤可以先在網上找方法)
我建議如果實在找不到方法:就重新拷貝鏡像images
然后在執(zhí)行腳本,安裝assembly_jenkins.tar
去項目下查看鏡像:
$ cd recruiting-system
$ docker images
執(zhí)行docker需要加上sudo的课梳,可以這樣弄就不需要使用sudo了:
docker命令跟默認docker daemon創(chuàng)建的unix socket 通訊都需要速凍權限距辆, 這尅通過創(chuàng)建docker組來解決:
$sudo groupadd docker
將當前用戶加入docker組
$sudo gpasswd -a ${USER} docker
重新啟動docker服務
$sudo service docker restart
安裝docker compose
參考官網:https://docs.docker.com/compose/install/
更便捷的方法:
拷貝docker compese 配置文件到 ubuntu的compose-> usr -> local -> bin 下面
隨便那個目錄下執(zhí)行:$ chmod +x /usr/local/bin/docker-compose
下載項目:
https://github.com/thoughtworks-academy/recruiting-system
修改hosts文件,打開文件暮刃,獨立一行添加
gedit /etc/hosts
在打開的記事本中加入下面的:
#linux
127.0.0.1 local.twars
進入項目 :
cd recruiting-system
git pull
git status
git submodule update
查看所有鏡像有沒有裝好
docker images
導入mysql
進入項目的assembly目錄下執(zhí)行:
$docker-compose up -d mysql
查看數據庫等
docker ps
#結果應該顯示mysql 的版本號跨算,如:”mysql:5.7“
查看該命令后面跟什么:
$ ./twars.sh
初始化數據庫
$ ./twars.sh my
進入項目的paper-api目錄下執(zhí)行:
$ cd ../parper-api
查看任務:
#如果出現錯誤,如”ERROR:Java-Home is not set and no ’java‘ command 椭懊。漂彤。。灾搏〈焱“
#說明沒有安裝JDK,先去安裝JDK狂窑,然后再來執(zhí)行./gradlew tasks 媳板,
#查看任務,并且下載gradle泉哈,時間比較長喲蛉幸!
$ ./gradlew tasks 查看任務(也可以不執(zhí)行這個)
刷數據庫 :
$ ./gradlew flywayMigrate
查看數據庫mysql 破讨、id、容器名等(看你目前運行了哪些容器):
docker ps
進入數據庫:
docker exec -it assembly_mysql_1 bash
# assembly_mysql_1是容器名奕纫,是通過docker ps命令查看得到的提陶。
登錄mysql數據庫(密碼為thoughtworks):
mysql -u root -pthoughtworks
查看數據庫:
show databases
創(chuàng)建數據庫(一定要加”;“匹层,不加為會報錯):
use BronzeSword隙笆;
查看數據庫中表:
show tables;
#應該有顯示所初始化的表
退出數據庫:
$ exit
進入assembly目錄下執(zhí)行:
./twars.sh rs 如果提示說沒有權限那就加上sudo
#(如果網不好,可以找已經下載好的同學的電腦當做服務器升筏,通過端口號訪問她的電腦撑柔,獲取她已經下載的東西)
./twars.sh jk 需要真正翻墻才可以執(zhí)行成功(也可以不執(zhí)行這個)
切換到web-api下
gedit app.js
注釋下面兩行
var captcha = require('./middleware/captcha');
app.use(captcha(params));
在assembly下執(zhí)行
$ docker-compose up -d或者docker-compose up -d web-api
$ docker ps -a 查看隱藏的沒有活起來的容器
如果出現node:5.8的STATUS是Exited (1) X seconds ago的提示,那就查看 docker log
項目根目錄下:
$ docker logs assembly_web-api_1 (assembly_web-api_1只是針對我所出現的問題而言的)
執(zhí)行后提示Error: Cannot find module 'newrelic'…
解決Error切換到web-api下執(zhí)行: $ npm i
回到assembly下重新執(zhí)行:$ ./twars.sh rs
$ docker-compose up -ddocker ps -a
此時應該可以看到node的status是 Up X seconds
切換回assembly下執(zhí)行
docker exec -it assembly_web-api_1 bash
出現“root@e122f1d0af63:/#”root@e122f1d0af63:/# cd /var/app/
進入到“root@e122f1d0af63:/var/app#”繼續(xù)執(zhí)行:
root@e122f1d0af63:/var/app# npm uninstall canvas
root@e122f1d0af63:/var/app# npm install canvas
如果出現** canvas@1.5.0 invalid **
Ctrl+D退出
然后去到web-api下,將app.js中注釋取消
繼續(xù)在assembly下執(zhí)行
docker ps 查看node:5.8是否up
docker-compose kill web-api
docker-compose up -d
在首頁點擊注冊查看驗證碼是否成功顯示:
解決注冊的問題
#由于在注冊的時候您访,無法注冊成功铅忿,可以在控制臺的Network中看到相應的錯誤,可以知道是因為代碼中的數據沒有被讀入數據庫灵汪,所以需要手動從容器中進入數據庫檀训,修改數據庫,將那條數據(查看日志去代碼中找到的)手動加入數據庫
由于請求是先發(fā)給nginx享言,所以去nginx峻凫,在進入conf.d
里面的代碼有一個協議:”proxy_pass http://web-api:3000“
所以去查看web-api日志:
查看assembly_web-api_1容器的日志:
$ docker logs 容器名字(如:assembly_web-api_1)或者容器的id
# docker logs assembly_web-api_1
日志中的錯誤提示是在項目目錄:
web-api/controllers/register-controller.js:190行:25列
去項目中找
點到registerable, 兩次ctrl B 担锤,ctrl∥党俊B后:
發(fā)現是由數據庫configuration產生乍钻,找到
點到目錄肛循,ctrl B,就到定義Configuration的文件
依然在web-api下面:
講這條數據復制后添加到數據庫银择,具體步驟看下面
#查看容器
$ docker ps
#進入mongo容器
$ docker exec -it mongo的id bash
# 如:$ docker exec -it c6258a bash
進入數據庫(如下圖):
$ mongo
> show dbs
#使用數據庫twars
>use twars
#創(chuàng)建集合configurations
>db.createCollection("configurations")
#給集合configurations插入一條數據(這條數據從代碼中復制得來)
>db.configurations.insert({"registerable":true,"qaContent":""})
然后再去注冊就好可以注冊成功多糠,進入個人中心頁面:
查看docker日志
$ docker logs id(容器的id)
題目不能出來圖片的解決:
修改下面文件中的一行代碼:
將如下第31行代碼:
修改為:
進入assembly ,從新啟動服務器:
$ docker-compose kill
$ docker-compose up -d
刷新頁面就可以了