配置env
文件
- 拷貝example成.env
cp env-example env
.env
文件中APP_CODE_PATH_HOST
是本地路徑APP_CODE_PATH_CONTAINER
是遠程映射路徑,看需求修改,大多數情況下是不需要的- 如果有調試代碼的需求,也可以將
PHP_FPM_INSTALL_XDEBUG
和WORKSPACE_INSTALL_XDEBUG
兩個選項打開 - 如果還有其他的需求,可以在
.env
里面搜索,里面已經將大多數配置項都給獨立出來了
運行容器
進入到laradock
的工作目錄下面,就是clone
的項目的根目錄我的工作目錄就是~/Docker/laradock
。
然后運行如下命令
docker-compose up -d nginx mysql
就會看到在自動執行build
操作,并且build完了之后自動后臺啟動了如下容器
- nginx
- php-fpm
- workspace
- mysql
那是因為php-fpm
和workspace
還有docker-in-docker
是隨nginx
一并啟動的
所以實際上
docker-compose up -d nginx mysql
和
docker-compose up -d nginx workspace php-fpm mysql
這兩條命令的效果是一樣的,可以都帶上,也可以不寫。
up
命令在第一次啟動的時候實際上就是build
+ start
的組合,如果容器不存在,那么就build
一個容器,并且啟動服務,如果容器存在那么直接啟動服務,大概就是這么個意思 -d
的意思是后臺運行
配置web項目
一下是我laravel
項目的部分配置
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=root
......
注意,數據庫主機必須得是別名才可以,如果DB_CONNECTION
這個地方輸入172.0.0.1或者是localhost
都是會連接失敗的。
在其它的項目中也必須是這樣的,配置數據庫鏈接,redis
,或者MemCache
鏈接都必須設置成具體的別名。或者你說我找到各個容器的ip,可以嘛。可以,但是并不建議這樣做,因為ip是會變動的。
具體別名可以參考./docker-compose.yml
文件中的設置
這個主要的技術實現應該是用了docker
的虛擬網橋技術.
配置宿主機的host
因為,往往我們訪問的時候,是通過宿主機上面的瀏覽器發送請求的,所以,配置宿主機上面的host
必不可少。
vim /etc/hosts
我這里加入一條我自己設置的虛擬域名
127.0.0.1 blog.test
然后保存,刷新下host。
配置nginx
進入到./laradock/nginx/sites
文件夾,然后ll
一下,我們會發現,laradock已經幫我們放了好多列舉的文件進來
app.conf.example default.conf laravel.conf.example symfony.conf.example
根據需求拷貝一份,然后修改一下就可以了,都不是很難,由于我們本地是laravel開發的博客項目,所以我就直接拷貝laravel.conf.example
,然后使用vim打開
cp laravel.conf.example blog.conf vim blog.conf
打開后的內容...
server {
listen 80;
listen [::]:80;
# For https
# listen 443 ssl;
# listen [::]:443 ssl ipv6only=on;
# ssl_certificate /etc/nginx/ssl/default.crt;
# ssl_certificate_key /etc/nginx/ssl/default.key;
server_name laravel.test;
root /var/www/laravel/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \\.php$ {
try_files $uri /index.php =404;
fastcgi_pass php-upstream;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fixes timeouts
fastcgi_read_timeout 600;
include fastcgi_params;
我們會發現,如果沒有特殊需求的話,這個里面大多數地方我們并不需要修改。我們只需要關注server_name
和root
這兩個參數,把這個里面的laravel
換成我們項目名就可以了,這里我們換成blog
下面是修改后的內容
server {
listen 80;
listen [::]:80;
# For https
# listen 443 ssl;
# listen [::]:443 ssl ipv6only=on;
# ssl_certificate /etc/nginx/ssl/default.crt;
# ssl_certificate_key /etc/nginx/ssl/default.key;
server_name blog.test;
root /var/www/blog/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \\.php$ {
try_files $uri /index.php =404;
fastcgi_pass php-upstream;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fixes timeouts
fastcgi_read_timeout 600;
include fastcgi_params;
訪問
輸入url
http://blog.test/
瀏覽器返回結果
-
開發
+關注
關注
0文章
370瀏覽量
40844 -
開源
+關注
關注
3文章
3349瀏覽量
42501 -
Docker
+關注
關注
0文章
458瀏覽量
11857
發布評論請先 登錄
相關推薦
評論