Skip to content

DevinY/phpenv

Repository files navigation

phpenv

Docker php 容器化專案執行環境

透過.env指定專案路徑,搭配ssh服務,就能使用VSCode的ssh-remote簡易的連進容器中。

您可以將不需要的容器服務註解掉或開啟。

進階用途: 可透過放置不同的env檔到envs資料夾,執行多個不同的專案。

第一步: 執行link即可產生預設的.env設定檔。

./link

第二步: 依自己的環境調整專案名稱及開啟的連接埠

您可以加上正確的USER_ID及GROUP_ID,特別在Linux環境很有用。

預設容器會使用uid及gid 1000執行,nginx及php,依自己的環境可以調整正確的USER_ID及GROUP_ID。

#SERVICES="mariadb"
APP_URL=http://127.0.0.1:1050
PROJECT=default
FOLDER=..
HTTP_PORT=1050
HTTPS_PORT=1150
DB_PORT=1250
SSH_PORT=2222
DRIVE_PORT=2223
USER_ID=1000
GROUP_ID=1000

例如: 下方是我Synology NAS下的環境,在Linux的環境資料庫的目錄會建立失敗, 請自行調整data目錄中資料夾權限。 APP_URL主要用於識別參考用

DotEnv Settings
SERVICES="ssh_db mariadb_ssh redis "
PROJECT=ccc
APP_URL=https://www.ccc.tc
FOLDER=/volume1/docker/ccc
HTTP_PORT=1056
SSH_PORT=2256
DB_PORT=3356
USER_ID=1026
GROUP_ID=100

第三步: 移除#SERVICE的註解以啟動資料庫服務。

您可以由services的資料夾中查看有那些服務能用,例如: redis,以空白格開不同的服務名稱。

SERVICES="mariadb redis drive"

drive服務不提供PHP,主要可用於資料上傳,或是Laravel的Storage Filesystem的SFTP功能。

./console build drive

第四步: 建立容器,僅需執行一次,除非您變動USER_ID或GROUP_ID時,才需重buidl。

重要: 如果您是執行中的舊專案,請確認php版號一制,必免因PHP升級造成程式執行異常

第一次啟動容器時,可透過./console build建立容器,預設的image名稱prefix為default,會依據您dot env中的PROJECT而變更。

default_drive
default_ssh
default_nginx
default_php

指令說明

./link 選擇環境或產生初始化環境變數範本
./link  直接連結到已知的Project
./start 啟用
./restart 停用再啟用容器
./stop 停用
./stop [project_name] 停用啟動中,非.env設定中的專案服務。
./relaod 重整nginx設定
./info 顯示.env資訊
./info help 查看info更多的子命令
./stats 查看所有envs中的Project容器運作狀態
./syn_auth.sh 同步自己的公鑰到authorized_keys中,用於ssh驗證
./gen_ssl_for_test.sh [name] 建立自簽憑證並自動匯入MacOs鑰匙圈,name後方會自動追加.test
./del_know_host.sh [interger] 在MacOS環境用來快速刪除~/.ssh/known_hosts特定行號
./artisan 用來執行php容器服務的artisan指令
./console 串接docker原生的命令,自動依.env代入project名稱,另外提供本專案的一些子命令。
./console help 查看phpenv提供的子命令說明

多env檔(進階操作)

./all 查看所有envs中的PROJECT服務啟動狀態 ./all start envs資料夾中的所有env檔,env檔的PROJECT名稱及啟動的PORT不可重覆,會自重連結到每個.env檔進行啟動。 ./all stop 停用envs資料夾的所有服務,會自重連結到每個.env檔進行停止

範例: 查看./console 幫助

./console help

容器啟動時,預設進入php容器中

./console

進入資料庫容器,相當於執行docker-compose exec。

./console exec db bash

執行artisan的命令,例如查看框架版本,相當於執行php artisan。

./console artisan -V

Drive服務密碼變更,可用於Laravel Storage Filesystem的SFTP drive容器為隨機密碼,要登入我們需要重新設定密碼,指令如下

./console exec drive passwd dlaravel

設更密碼後,我們需要重新commit我們自己的image,以便下次重啟時,密碼不會被還原。

可以輕易的進行容器image的變更保存,例如安裝新的套件。

./console commit _drive_1

可以輸入下方指令查看啟動中的容器名稱進行指定

./console commit

更新與修正

僅更新phpenv主要的bash,bug修正及取得最新的功能

運作中的環境,不適合抓取完整的yml設定檔時,特過這個指令僅更新主要的bash檔案。

./update_bash.sh

About

如果說docker-compose用來管理多個容器,那phpenv就是用來管理多個docker-compose. :)

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages