使用 podman 来搭建 lnmp 开发环境
能看到这里,想必你已经知道什么是 podman 了,以及大致了解和 docker 的区别。
我自己是使用 arch linux 作为开发 OS 的,下面开始介绍下如何搭建:
我这里使用的是 podman 的 pod 来管理多个容器,其中网络是相通的,方便容器各自的访问。
1.安装 podman :paru -S podman aardvark-dns
安装完成后,根据相应的提示做一些配置
2.拉取镜像,podman 可以直接获取 docker 的镜像,当然你也可以配置:
podman pull docker.io/library/nginx
podman pull docker.io/library/mariadb
podman pull docker.io/bitnami/php-fpm
3.普通用户不能创建端口号低于 1024 的容器映射,不使用 sudo 的话,需要编辑内核参数:sudo vim /etc/sysctl.d/podman.conf
添加:net.ipv4.ip_unprivileged_port_start = 80
修改文件权限:sudo chmod 644 /etc/sysctl.d/podman.conf
使用 sudo sysctl --system
来重新加载配置
4.编辑 pod 配置文件:nginx-php.pod.yaml:
apiVersion: v1
kind: Pod
metadata:
name: phpx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
volumeMounts:
- name: nginx-conf
mountPath: /etc/nginx/conf.d/
- name: php-files
mountPath: /var/www/php/
- name: php-fpm
image: php-fpm:latest
volumeMounts:
- name: php-files
mountPath: /var/www/php/
- name: mariadb
image: mariadb:latest
env:
- name: MYSQL_ROOT_PASSWORD
value: root
# - name: MYSQL_DATABASE
# value: your_database_name
# - name: MYSQL_USER
# value: your_mysql_username
# - name: MYSQL_PASSWORD
# value: your_mysql_password
volumes:
- name: nginx-conf
hostPath:
path: /home/tony/documents/pot/phpx/conf.d/
type: File
- name: php-files
hostPath:
path: /home/tony/documents/pot/phpx/src/
type: Directory
详细配置你可能需要查询更多资料,需要保证配置文件中的路径真是存在,比如:你将 /home/tony/documents/pot/phpx/nginx/
映射到容器的 /etc/nginx/ 则需要保证你的宿主机器目录中相关的配置文件都需要存在,不然加载配置不通过。上述示例中用到的目录是 conf.d 其中的文件可有可无,可以顺畅进行,网站的配置可以放在其中。还可以加载其他配置,如:php.ini ,示例中我没有添加。
5.创建 podpodman play kube nginx-php.pod.yaml
6.启动、停止、删除:
podman pod start phpx
podman pod stop phpx
podman pod rm php
7.进入容器:podman exec -it phpx-mariadb bash
8.查看容器信息(ip 地址):podman inspect phpx-mariadb | grep IPAddress\":
9.查看容器日志podman logs phpx-nginx