首页 > 其他分享 >用Podman搭建LAMP开发环境的容器(六) -- 使用普通用户

用Podman搭建LAMP开发环境的容器(六) -- 使用普通用户

时间:2024-09-24 23:22:53浏览次数:3  
标签:php7.4 -- sudo lamp dev Podman LAMP && mysql

上接: 用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

相关文章

  • UG二次开发基础篇-图层管理
    今天我们来实现第一个UG的应用功能。功能包括:设置工作图层、图层类别管理、打开、关闭图层。进入DLX编辑窗口,新建图层管理窗口,如图所示:代码生成,选择C++.......
  • # 高可用的并发解决方案nginx+keepalived(三)
    高可用的并发解决方案nginx+keepalived(三)一、Nginx搭建图片服务器针对任何站点,几乎都要访问图片,而一个网页里面几乎有好些张图片,这时候会占据大量tomcat连接,造成大量并发,我们可以通过Nginx配置直接访问硬盘里的图片,绕开tomcat。1、在CentOS7服务器上,创建/usr/local/im......
  • Web的入门知识(9月24日)
        我也是新手刚学web没几天,总结一下今天所学,如有错误,欢迎批评指正    我是边写边学的,刚开始我写了一个类似新闻界面的前端,自然按着新闻页面的构成一步步学习。1.页面的标题排版    使用vscode时按下!会自动生成html的框架,其中我们要修改title为......
  • nginx - - - Windows 使用手册
    1.安装nginx官网:https://nginx.org/nginx下载页面:https://nginx.org/en/download.html下载稳定版压缩包解压,就安装完成了。下载地址:https://nginx.org/download/nginx-1.26.2.zip解压:2.修改配置文件修改nginx.conf文件。3.运行打开nginx.exe安装目录,在资源管理器......
  • 阿里云ecs使用nginx部署mqtt服务的tcp转发
    一、什么是MQTT?MQTT(MessageQueuingTelemetryTransport)是一种轻量级、基于发布-订阅模式的消息传输协议,适用于资源受限的设备和低带宽、高延迟或不稳定的网络环境。它在物联网应用中广受欢迎,能够实现传感器、执行器和其它设备之间的高效通信。二、为什么MQTT是适用于物联网的最......
  • Android studio 新建项目gradle依赖下载超时
    版本信息:android-studio-2024.1.2.12gradle-8.7&使用groovy配置项目配置:修改settings.gradle文件,将阿里云镜像仓库添加到google{}和mavenCentral()上方,不要随意改变仓库位置,仓库列出顺序决定 Gradle在这些仓库中搜索各个项目依赖项的顺序。pluginManagement{......
  • 解决荣耀手机使用adb报错“no devices/emulators found”
    一、下载安装suite荣耀手机助理 二、手机不要连接电脑,打开手机助理,选择常规设置菜单,取消勾选[设备连接时自动启动] 三、关闭手机助理,后续不再使用(安装手机助理仅是为了电脑安装正确的手机驱动)四、进入手机『开发人员选项』,打开『USB调试』和『“仅充电”模式下允许A......
  • 大数据新视界 --大数据大厂之大数据实战指南:Apache Flume 数据采集的配置与优化秘籍
           ......
  • 12K+ Star!Taipy:一个快速将数据和AI算法转化为Web应用的工具
    Taipy简介Taipy[1] 是一个为数据科学家和机器学习工程师设计的,用于构建数据和AIWeb应用的工具。它能够让用户无需学习新语言,只需使用Python,就能专注于数据和AI算法,而无需担心开发和部署的复杂性。它的核心优势在于简化了开发流程,使得用户可以专注于算法本身,而不是技术实......
  • 数据结构:二叉树 (Heap堆篇) 手把手带你入门数据结构~ (简单易懂超详细~)
    文章目录前言一、树的概念1.树的概念与结构2.树的特性3.树的相关术语4.树的表示方法5.树形结构实际场景二、二叉树1.二叉树的概念2.二叉树的结构3.满二叉树3.完全二叉树1.完全二叉树的概念2.完全二叉树的性质3.完全二叉树的结构三、堆1.堆的概念2.堆的......