制作PHP8.1版的workerman镜像
This commit is contained in:
parent
90e4007758
commit
6a95204f66
@ -53,6 +53,7 @@ module.exports = {
|
|||||||
'/php/': [
|
'/php/': [
|
||||||
'../',
|
'../',
|
||||||
'',
|
'',
|
||||||
|
'docker81',
|
||||||
'nginx',
|
'nginx',
|
||||||
'openresty',
|
'openresty',
|
||||||
'php82'
|
'php82'
|
||||||
@ -76,6 +77,7 @@ module.exports = {
|
|||||||
collapsable: false, // 可选的, 默认值是 true,
|
collapsable: false, // 可选的, 默认值是 true,
|
||||||
sidebarDepth: 1, // 可选的, 默认值是 1
|
sidebarDepth: 1, // 可选的, 默认值是 1
|
||||||
children: [
|
children: [
|
||||||
|
'/php/docker81',
|
||||||
'/php/nginx',
|
'/php/nginx',
|
||||||
'/php/openresty',
|
'/php/openresty',
|
||||||
'/php/php82'
|
'/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