上接: 用Podman搭建LAMP开发环境的容器(五) – 端口转发
现在这个容器还是直接用root用户跑的。虽然说如果只是开发环境的话,而且是一个虚拟机容器,直接用root用户工作应该也问题不大。不过我还是想在一般情况下用普通用户。
首先我要改containerfile文件的脚本,来创建一个普通用户。并做或相关的配置,比如说权限什么的。
RUN groupadd -g 900 lamp-dev && useradd -u 900 -s /bin/bash -g lamp-dev lamp-dev && \
mkdir /home/lamp-dev && \
chown -R lamp-dev:lamp-dev /home/lamp-dev \
&& echo lamp-dev ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/lamp-dev \
&& chmod 0440 /etc/sudoers.d/lamp-dev
USER lamp-dev
上面脚本做了:
- 添加了一个
lamp-dev
用户和一个lamp-dev
组; - 创建了用户目录;
- 把
lamp-dev
用户加到sudoer中,以便以后可能需要root权限; - 让容器用
lamp-dev
的身份运行。
既然要用到sudo
,就要在安装软件包的时候把sudo
加上:
RUN apt update && \
apt install -y locales \
apache2 \
php7.4 \
php7.4-mysql \
php7.4-mbstring \
php7.4-zip \
php7.4-gd \
php7.4-xml \
php7.4-curl \
libapache2-mod-php7.4 \
mariadb-server \
sudo && \
apt clean && \
rm -rf /var/lib/apt/lists/*
哦,现在容器是在用普通用户的身份运行的,所以entrypoint.sh
也要改一下:
#!/bin/bash
sudo -E apache2ctl start
if [ -d /var/lib/mysql/mysql ]; then
sudo service mysql start
else
sudo mysql_install_db
sudo service mysql start
fi
exec "$@"
主要是加上sudo
,好让这些命令是用root用户运行的,否则权限不够。另外调用apache2ctl
时sudo加上了-E
参数是为了把环境变量传递过去。
重新构建容器镜像:
E:\containers\lamp>podman build . -t lamp:ubuntu20.04
在VSCode中运行Dev Containers: Rebuild container
重建容器。
挺顺利的,现在我看到bash是用lamp-dev
用户身份运行的了。
今天到这,接下来配置存储vscode扩展的卷(存储空间)。
标签:php7.4,--,sudo,lamp,dev,Podman,LAMP,&&,mysql From: https://blog.csdn.net/arthurchan2021/article/details/142502717