docker 支持開發(fā)和構(gòu)建使用

v2.3.1
版本
2024-10-20
版本更新時間
2716
安裝
31
star
為了后期更好的維護,最新 2.0 版本已修改包名,請注意切換
webman docker
簡介
將 docker 用于 webman 的開發(fā)和生產(chǎn)部署
鏡像地址和 tag
- krisss/docker-webman:7.4-cli-alpine
- krisss/docker-webman:8.0-cli-alpine
- krisss/docker-webman:8.1-cli-alpine
此鏡像會通過 github actions 動態(tài)更新 php 的小版本,鏡像 tag 名不變
2.3.0 之后增加類似
7.4-cli-alpine-v2.3.0
形式的鏡像版本,用于固定一個在發(fā)布版本時當(dāng)前鏡像中的各個組件版本(求穩(wěn)可以用這種版本的鏡像)
鏡像中的組件
- php: extension 包含:bcmath、event、gd、mysqli、pdo_mysql、opcache、pcntl、redis、sockets、zip
- composer
- install-php-extensions
- supervisor
安裝
composer require webman-tech/docker
會在項目根目錄下提供 Dockerfile
用于構(gòu)建鏡像,提供 docker-compose.yml
用于開發(fā)
使用
當(dāng)開發(fā)環(huán)境使用:目前代碼未建立
啟動鏡像
docker run --rm --name webman \
-v /local/workspace:/app \
-p 8787:8787 \
-it \
--privileged -u root \
--entrypoint /bin/sh \
krisss/docker-webman:7.4-cli-alpine
創(chuàng)建項目
composer create-project workerman/webman
啟動項目
cd webman
php start.php start
訪問 http://localhost:8787 即可
當(dāng)開發(fā)環(huán)境使用:已有 webman 代碼
在項目下自建 docker-compose.yml
,參考例子如下:
version: "3.7"
services:
webman:
image: krisss/docker-webman:${DOCKER_WEBMAN_VERSION:-7.4-cli-alpine}
ports:
- "${DOCKER_WEBMAN_PORT:-8787}:8787"
volumes:
- .:/app
啟動:
docker-compose up
訪問 http://localhost:8787 即可
打包項目成鏡像
在項目下自建 Dockerfile
,參考例子如下:
ARG WEBMAN_DOCKER_VERSION=7.4-cli-alpine
# https://github.com/krissss/docker-webman
FROM krisss/docker-webman:$WEBMAN_DOCKER_VERSION
# 增加額外的擴展
#RUN install-php-extensions imagick
# 設(shè)置配置文件
# 自定義 php 配置文件,如果需要的話
# 覆蓋鏡像自帶的
#COPY environments/docker/php.ini "$PHP_INI_DIR/conf.d/app.ini"
# 擴展額外的
#COPY environments/docker/my_php.ini "$PHP_INI_DIR/conf.d/my_php.ini"
# 自定義 supervisor 配置,如果需要的話
# 覆蓋鏡像自帶的
#COPY environments/docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# 擴展額外的
#COPY environments/docker/my_supervisord.conf /etc/supervisor/conf.d/my_supervisord.conf
# 預(yù)先加載 Composer 包依賴,優(yōu)化 Docker 構(gòu)建鏡像的速度
COPY ./composer.json /app/
COPY ./composer.lock /app/
RUN composer install --no-interaction --no-dev --no-autoloader --no-scripts
# 復(fù)制項目代碼
COPY . /app
# 執(zhí)行 Composer 自動加載和相關(guān)腳本
RUN composer install --no-interaction --no-dev && composer dump-autoload
編譯:
docker build -t {image-name} .
運行:
docker run --rm -p 8787:8787 {image-name}
訪問 http://localhost:8787 即可
For Developer
修改 Dockerfile 后測試方式:
- 新建
.env
文件,其中配置docker-compose.yml
中的 env 變量 - 執(zhí)行build:
docker-compose build webman
- 本機測試:
docker run --rm -it {ImageName}:{ImageTag} /bin/sh