制作PHP8.1版的workerman镜像
This commit is contained in:
parent
90e4007758
commit
6a95204f66
@ -53,6 +53,7 @@ module.exports = {
|
||||
'/php/': [
|
||||
'../',
|
||||
'',
|
||||
'docker81',
|
||||
'nginx',
|
||||
'openresty',
|
||||
'php82'
|
||||
@ -76,6 +77,7 @@ module.exports = {
|
||||
collapsable: false, // 可选的, 默认值是 true,
|
||||
sidebarDepth: 1, // 可选的, 默认值是 1
|
||||
children: [
|
||||
'/php/docker81',
|
||||
'/php/nginx',
|
||||
'/php/openresty',
|
||||
'/php/php82'
|
||||
|
143
docs/php/docker81.md
Normal file
143
docs/php/docker81.md
Normal file
@ -0,0 +1,143 @@
|
||||
# 制作PHP8.1版的workerman镜像
|
||||
|
||||
## 拉基础镜像
|
||||
|
||||
```sh
|
||||
docker pull php:8.1-cli
|
||||
```
|
||||
|
||||
## 启动容器
|
||||
|
||||
```sh
|
||||
docker run -itd --net=host --name=workerman php:8.1-cli
|
||||
```
|
||||
|
||||
> php:8.1-cli是基于debian:bullseye制作的
|
||||
|
||||
### 替换国内源(可选)
|
||||
|
||||
保存一个`sources.list`文件
|
||||
|
||||
```sh
|
||||
tee sources.list <<-'EOF'
|
||||
deb http://repo.huaweicloud.com/debian/ bullseye main non-free contrib
|
||||
deb-src http://repo.huaweicloud.com/debian/ bullseye main non-free contrib
|
||||
deb http://repo.huaweicloud.com/debian/ bullseye-updates main non-free contrib
|
||||
deb-src http://repo.huaweicloud.com/debian/ bullseye-updates main non-free contrib
|
||||
deb http://repo.huaweicloud.com/debian/ bullseye-proposed-updates main non-free contrib
|
||||
deb-src http://repo.huaweicloud.com/debian/ bullseye-proposed-updates main non-free contrib
|
||||
deb http://repo.huaweicloud.com/debian/ bullseye-backports main non-free contrib
|
||||
deb-src http://repo.huaweicloud.com/debian/ bullseye-backports main non-free contrib
|
||||
deb http://repo.huaweicloud.com/debian-security bullseye-security/updates main non-free contrib
|
||||
deb-src http://repo.huaweicloud.com/debian-security bullseye-security/updates main non-free contrib
|
||||
EOF
|
||||
```
|
||||
|
||||
把文件保存到容器中替换原来的源
|
||||
|
||||
```sh
|
||||
docker cp sources.list workerman:/etc/apt/
|
||||
```
|
||||
|
||||
## 进入容器
|
||||
|
||||
```sh
|
||||
docker exec -it workerman bash
|
||||
```
|
||||
|
||||
## 制作环境
|
||||
|
||||
先安装一些依赖
|
||||
|
||||
```sh
|
||||
apt-get update && apt-get install -y \
|
||||
libfreetype6-dev libjpeg62-turbo-dev libpng-dev libwebp-dev zlib1g-dev
|
||||
libzip-dev
|
||||
libevent-dev
|
||||
```
|
||||
|
||||
### 安装扩展
|
||||
|
||||
```sh
|
||||
# gd
|
||||
docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg --with-webp
|
||||
docker-php-ext-install -j$(nproc) gd
|
||||
# exif
|
||||
docker-php-ext-install exif
|
||||
# opcache
|
||||
docker-php-ext-install opcache
|
||||
# pdo_mysql
|
||||
docker-php-ext-install pdo_mysql
|
||||
# mysqli
|
||||
docker-php-ext-install mysqli
|
||||
# zip
|
||||
docker-php-ext-install zip
|
||||
# pcntl
|
||||
docker-php-ext-install pcntl
|
||||
# fileinfo
|
||||
docker-php-ext-install fileinfo
|
||||
# redis (回答都用默认值)
|
||||
pecl install redis
|
||||
docker-php-ext-enable redis
|
||||
# event (Include libevent OpenSSL support问题回答为no,其他默认)
|
||||
docker-php-ext-install sockets
|
||||
pecl install event
|
||||
docker-php-ext-enable event
|
||||
cat /usr/local/etc/php/conf.d/docker-php-ext-event.ini >> /usr/local/etc/php/conf.d/docker-php-ext-sockets.ini
|
||||
mv /usr/local/etc/php/conf.d/docker-php-ext-sockets.ini /usr/local/etc/php/conf.d/docker-php-ext-event.ini
|
||||
# 上面操作原因:event扩展依赖sockets扩展,所以要先安装sockets扩展,同时保证sockets扩展要在event之前被加载
|
||||
# pgsql和pdo_pgsql
|
||||
apt install -y lsb-release libpq-dev
|
||||
docker-php-ext-install -j$(nproc) pgsql pdo_pgsql
|
||||
```
|
||||
|
||||
### 安装composer
|
||||
|
||||
```sh
|
||||
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
||||
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
|
||||
php composer-setup.php
|
||||
php -r "unlink('composer-setup.php');"
|
||||
sudo mv composer.phar /usr/local/bin/composer
|
||||
```
|
||||
|
||||
### 创建一个应用目录
|
||||
|
||||
```sh
|
||||
mkdir -p /app/service
|
||||
```
|
||||
|
||||
### 生成镜像
|
||||
|
||||
如果还有容器内,先用`exit`命令退出到宿主机。
|
||||
|
||||
用`docker ps -a`命令可以看到对应的
|
||||
|
||||
```sh
|
||||
docker commit workerman workerman:8.1
|
||||
```
|
||||
|
||||
### 使用镜像
|
||||
|
||||
在宿主机中进行项目代码根目录,执行下面的命令
|
||||
|
||||
```sh
|
||||
docker run -it -d --net=host -v ./:/app/service -w /app/service workerman:8.1
|
||||
```
|
||||
|
||||
执行容器中的composer命令:
|
||||
|
||||
```sh
|
||||
docker exec <容器ID> composer install
|
||||
docker exec <容器ID> composer require xxxx
|
||||
```
|
||||
|
||||
启动容器中的workerman服务:
|
||||
|
||||
```sh
|
||||
docker exec <容器ID> php start.php start
|
||||
```
|
||||
|
||||
### 发布镜像
|
||||
|
||||
可以参照阿里云的容器镜像服务中的文档,把本地镜像发布到公网上,便于在其他主机中使用。
|
Loading…
Reference in New Issue
Block a user