第2節,一條命令,啟動Codeigniter並連線上資料庫
先把命令貼在這兒,在此之前需要進行一些配置,那就是本文剩下的所有內容了。
docker-compose up
Compose是Docker官方編排工具,我們可以用它來達成上一篇文章裡面講到的容器的依賴順序。當前一個容器啟動完畢之後再啟動下一個容器。
本文參考了它的官方文件說明:
https://docs.docker.com/compose/
使用的映象:
php映象:
mysql映象:
mysql:5.7
compose檔案:
docker-compose.yml:
version: "3"services: web_ci: image: virhuiai/teaching_gf_web_develop:version-0.0.3 ports: - "80:80" volumes: - /Users/virhuiaivirhuiai/Documents/virhuiai-github/teaching_gf_web_develop/framework-4.0.4:/virhuiai/framework-4.0.4/ depends_on: - "mysql_db" mysql_db: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=Passw0rd! - MYSQL_DATABASE=ci4_database_name
要注意的一點是,在yaml格式裡面空格,別少了多了。
這邊配置兩個容器,第1個容器:
web_ci: image:virhuiai/teaching_gf_web_develop:version-0.0.3
這裡指定了我們上一節生成的映象。也可以使用當前目錄下的Dockerfile編譯出來而成,那麼把這兩行改成這樣:
web_ci: build: .
接著是埠對映:
ports: - "80:80"
這個就和命令列中的--publish 80:80 或者它的簡寫形式-p 80:80 等同。再接下來是宿主機和容器的目錄對映:
volumes: - /Users/virhuiaivirhuiai/Documents/virhuiai-github/teaching_gf_web_develop/framework-4.0.4:/virhuiai/framework-4.0.4/
這也對應著命令列中的-v命令引數。
然後就是很喜歡的依賴配置:
depends_on: - "mysql_db"
這會在下一個容器mysql_db啟動完成之後再啟動web_ci,這和書寫的順序無關。
然後是環境變數:
environment: - MYSQL_ROOT_PASSWORD=Passw0rd! - MYSQL_DATABASE=ci4_database_name
對應著命令列中的-e引數,配置了這個容器的資料庫root使用者的密碼,。
執行:配置做好後啟動它。
docker-compose up
哦,忘記了Docker沒執行起來,執行後再跑一遍。
啟動起來之後可以到Docker的面板看下:
docker-compose命令說明up嘗試自動完成一系列操作:包括構建映象,(重新)建立服務,啟動服務,並關聯服務相關容器等
start啟動巳經存在的服務容器
比如:
docker-compose stop
資料庫配置:
之前資料庫連結的配置已經在上篇寫過了,這邊再貼一份,app/Config/Database.php:
public $default = [ 'DSN' => '', 'hostname' => 'mysql_db', 'username' => 'root', 'password' => 'Passw0rd!', 'database' => 'ci4_database_name', 'DBDriver' => 'MySQLi', 'DBPrefix' => '', 'pConnect' => false, 'DBDebug' => (ENVIRONMENT !== 'production'), 'cacheOn' => false, 'cacheDir' => '', 'charset' => 'utf8', 'DBCollat' => 'utf8_general_ci', 'swapPre' => '', 'encrypt' => false, 'compress' => false, 'strictOn' => false, 'failover' => [], 'port' => 3306, ];
根據ci官網的教程中的一篇,我們先來建個表備用。
https://codeigniter.org.cn/user_guide/tutorial/news_section.html
# mysql -uroot -Dci4_database_name -p
select database();
可以看到現在當前資料庫已經是我們在Codeigniter中配置的資料庫了,現在我們給它插入一張表:
CREATE TABLE news ( id int(11) NOT NULL AUTO_INCREMENT, title varchar(128) NOT NULL, slug varchar(128) NOT NULL, body text NOT NULL, PRIMARY KEY (id), KEY slug (slug));INSERT INTO news VALUES(1,'Elvis sighted','elvis-sighted','Elvis was sighted at the Podunk internet cafe. It looked like he was writing a CodeIgniter app.'),(2,'Say it isn\'t so!','say-it-isnt-so','Scientists conclude that some programmers have a sense of humor.'),(3,'Caffeination, Yes!','caffeination-yes','World\'s largest coffee shop open onsite nested coffee shop for staff only.');
現在在在瀏覽器裡面輸入127.0.0.1就不再是上一節中的報錯資訊了。
第一個例子:預設頁面是在/framework-4.0.4/app/Controllers/Home.php這個檔案裡面的HomeController的這個index()方法。
我們也不做輸出出一個簡單的helloworld,改為直接測試一下資料庫是否可以連線,對\App\Controllers\Home裡的index方法修改:
<?php namespace App\Controllers;use Config\Database;class Home extends BaseController{ public function index() {// return view('welcome_message'); $db = Database::connect(); $tables = $db->listTables(); foreach ($tables as $table) { echo $table; } } //--------------------------------------------------------------------}
這時候我們再開啟瀏覽器,可以看到此時已經輸出了所有的表名:
好了,這一節已經連線上資料庫了,下節待續。
關於這篇文章的所有內容,後面也會提到GitHub上。
https://github.com/virhuiai/teaching_gf_web_develop