lamp环境容器搭建.md
基容器使用alpine linux
podman pull alpine
容器通信
# 把所有的服务放到一个docker-compose文件里面,就能端口通信了
创建一个php容器
# 创建一个名叫 alpine_dev_php 的容器,021b3423115f是alpine的镜像id
podman run --name alpine_dev_php -i -d -t 021b3423115f /bin/sh
# 进入 alpine_dev_php 容器,进行安装php环境
podman exec -it alpine_dev_php sh
# 自行换国内源,然后安装自己的php版本, 我测试环境只安装 php-cgi , 安装完成之后看一下php的配置文件位置等,记录一下即可
apk add php8 php8-cgi
# 如: /etc/php8/php.ini
# 提交到本地镜像, 091f9ef3e39a 是当前容器id
podman commit 091f9ef3e39a lxx/alpine-php8:001
使用podman-compose使用自己的镜像
# 说明
# lxx/alpine-php8:001 就是 commit 提交到本地的镜像
# /home/jcleng/desk/work/podman/alpine-php8/data:/data 配置文件等目录, 运行会进行文件拷贝: /etc/php8/php.ini
# /home/jcleng/desk/work/www 是所有的网站项目目录,映射同等的目录位置, 因为phpcgi解析的时候会读取nginx传入的目录位置
alpine-php8/docker-compose.yml 原文
version: "3"
services:
alpine-php8-run:
image: lxx/alpine-php8:001
container_name: alpine-php8-run-c
ports:
- 9201:9201
volumes:
- /home/jcleng/desk/work/podman/alpine-php8/data:/data
- /home/jcleng/desk/work/www:/home/jcleng/desk/work/www
command: /bin/sh -c "cp /etc/php8/php.ini /data/php.ini.bak && /usr/bin/php-cgi8 -b 0.0.0.0:9201 -c /data/php.ini"
nginx
# 步骤类似
podman run --name alpine_dev_nginx -i -d -t 021b3423115f /bin/sh
podman exec -it alpine_dev_nginx sh
# 自行换源
# 安装nginx
apk add nginx
# 配置文件目录
/etc/nginx/nginx.conf
/etc/nginx/http.d/default.conf
# 提交镜像
podman commit 4e15e2a6e1d0 lxx/alpine-nginx:001
# 运行下面的compose文件, 然后需要复制并编辑:(/data/http.d/default.conf无需编辑,每次会覆盖)
# /data/http.d/default.conf 拷贝为 /data/http.d/www.conf
# 解析端口即可
fastcgi_pass 127.0.0.1:9201;
docker-compose.yml原文
version: "3"
services:
alpine-nginx-run:
image: lxx/alpine-nginx:001
container_name: alpine-nginx-run-c
ports:
- 8081:80
volumes:
- /home/jcleng/desk/work/podman/alpine-nginx/data:/data
- /home/jcleng/desk/work/www:/home/jcleng/desk/work/www
command: /bin/sh -c "/bin/mkdir -p /data/http.d && /bin/cp -r /etc/nginx/http.d/* /data/http.d && /usr/sbin/nginx && /bin/sleep 100000"
www.conf原文
# This is a default site configuration which will simply return 404, preventing
# chance access to any other virtualhost.
server {
listen 80;
server_name localhost2;
location / {
root /home/jcleng/desk/work/www/tp6/public; #如果由静态文件指定php的根目录
index index.php;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
location ~ \.php$ {
root /home/jcleng/desk/work/www/tp6/public; #指定php的根目录
fastcgi_pass 127.0.0.1:9201;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}