首页 > 其他分享 >用Podman搭建LAMP开发环境的容器(五) -- 端口转发

用Podman搭建LAMP开发环境的容器(五) -- 端口转发

时间:2024-09-23 23:22:28浏览次数:3  
标签:容器 workspaces 8081 -- myproject Podman LAMP 80 localhost

上接:用Podman搭建LAMP开发环境的容器(四)–使用VS Code

今天接着折腾前几天的VSCode配置。虽然现在看着好像是差不多了,也可以在VSCode上面编写代码了。但是还有一个很大的问题:容器中Apache服务的端口并没有映射到本地,所以现在用浏览器不能访问我写的页面,也不能访问phpMyAdmin。

查看devcontainer.json参考文档,我发现了一个forwardPorts的配置项。我想应该可以通过它来配置。不过有个问题,按照参数的格式应该不能改变本机的端口号,只能在容器中是什么端口号在本机也是什么端口号。先不管那么多,配置试试再说吧。

修改.devcontainer.json文件,增加一行"forwardPorts": [80, 8081],整个文件内容现在是这样的:

{
	"image": "localhost/lamp:ubuntu20.04",
	"workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/myproject,type=bind",
	"workspaceFolder": "/workspaces/myproject",
	"overrideCommand": false,
	"forwardPorts": [80, 8081]
}

在VSCode按ctrl+shift+p,然后运行命令:Dev Containers: Rebuild container重建容器:
在这里插入图片描述

我看到80和8081端口和它们的转发地址。在浏览器访问http://localhost:80
在这里插入图片描述

心里咯噔了一下,怎么回事?不过立即想起来应该是还没有配置DocumentRoot的问题。先放下这个,访问http://localhost:8081试试:
在这里插入图片描述

很好,phpMyAdmin可以正常访问了。现在回过头去解决那个DocumentRoot的问题,修改.devcontainer.json文件,增加containerEnv的配置。如下:

{
	"image": "localhost/lamp:ubuntu20.04",
	"workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/myproject,type=bind",
	"workspaceFolder": "/workspaces/myproject",
	"overrideCommand": false,
	"forwardPorts": [80, 8081],
	"containerEnv": {
		"MY_DOCUMENT_ROOT": "/workspaces/myproject/src/public"
	}
}

重建容器后,再访问http://localhost:80:
在这里插入图片描述

看起来是成功了。

今天就到这,接下来考虑配置在普通用户下面工作,现在还是跑在root用户下的,总觉得不舒服。

前段时间因为觉得每天折腾完立即发博客好像每篇博客的内容太少了,于是就想改成搞完一个主题在发。但是发现这样就写不太下去了,所以还是按照之前的方法吧。请各位看官原谅。

标签:容器,workspaces,8081,--,myproject,Podman,LAMP,80,localhost
From: https://blog.csdn.net/arthurchan2021/article/details/142471124

相关文章

  • Python 入门教程(7)面向对象 | 7.2、成员变量
    文章目录一、成员变量1、成员变量的类型2、实例变量2.1、定义实例变量2.2、访问实例变量2.3、删除实例变量3、类变量3.1、定义类变量3.2、访问类变量3.3、修改类变量4、注意事项5、总结前言:在Python的面向对象编程(OOP)中,变量可以分为两大类:实例变量和类变量。这......
  • EfficientFormer实战:使用EfficientFormerV2实现图像分类任务(一)
    摘要EfficientFormerV2是一种通过重新思考ViT设计选择和引入细粒度联合搜索策略而开发出的新型移动视觉骨干网络。它结合了卷积和变换器的优势,通过一系列高效的设计改进和搜索方法,实现了在移动设备上既轻又快且保持高性能的目标。这一成果为在资源受限的硬件上有效部署视觉......
  • Java实现加法计算器
    今天我们来做一个Java中的方法的小练习:建立一个方法,去实现加法运算。代码实现importjava.util.Scanner;publicclassmethod01{ publicstaticvoidmain(String[]args){ Scannersc=newScanner(System.in); doubleinputNumber1=0.0; doubleinputNumber2=0.0......
  • EfficientFormer实战:使用EfficientFormerV2实现图像分类任务(二)
    文章目录训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法运行以及结果查看测试完整的代码在上一篇文章中完成了......
  • 【C++指南】C++中nullptr的深入解析
          ......
  • C语言分支语句和循环语句
     目录选择语句if-else语句if嵌套switch语句逻辑操作符!逻辑非&&逻辑与||  逻辑或循环语句while循环do-while循环for循环break和continue语句 break语句continue语句选择语句if-else语句if语句的语法形式if(表达式){语句}在C语言中非0为真,0为......
  • 数据结构-线性表的单链式存储结构图解及C语言实现
    概念链式存储:结点在存储器中的位置是任意的,即逻辑相邻的数据元素在物理上不一定相邻链式存储结构也称非顺序映像或链式映像图解链式存储结构中结点一般有两个部分组成,即数据域(data)和指针域,数据域是用于存放数据的,指针域是用来指向下一结点的地址的,其中头节点指向该链表......
  • 大型语言模型在学术界的影响:从写作到演讲
    引言......
  • 大语言模型在学术界的影响:从书写到口头表达
    ......
  • 【数据结构和算法实践-排序-归并排序】
    数据结构和算法实践-排序-归并排序题目MyThought代码示例JAVA-8题目排序MyThought然后再进行递归,递归要注意两个方面:一、自我调用二、终止条件:即函数边界注意点:树、递归*代码示例JAVA-8publicclassMergeSort{publicstaticvoidmergeSor......