docker里搭建web服务器
主机环境如下:
- Debian 11系统,IP地址:192.168.0.9
- Docker内安装Portainer图形化操作界面,Portainer的端口建议在安装的时候用10000,不要用9000,9000和php的端口有冲突。安装方法:https://kzpu.com/archives/5030.html
- web服务器包括nginx,php,mariadb,phpmyadmin
docer里面有一些坑需要避开,新手可以看一下。打开Portainer图形化界面,并且登录。
一,安装nginx
1,点Containers,然后点右边的Add container,就是新增加一个容器
2,按照要求进行填写。Name:容器的名字,自己可以取一个,自己喜欢就行。Image:镜像的名字,要按作者取的镜像名字来填写,这个是必填。
Always pull the image:意思是总是下载镜像,第一次安装时要打开。如果之前有下载的镜像,只是修改配置,可以关闭这个开关。
Publish a new network port:把容器内的端口映射出来,网卡是桥接的时候,一定要映射,网卡是host时,不用映射。
3,全部填好之后,点一下Deploy the container,等一会容器就ok了。第一次时间比较长,因为要下载镜像,时间视网络好坏。
下图,nginx已OK了。
4,这个时候,在浏览器中输入debian主机的ip,就可以打开nginx的默认页面了。虽然可以用了,但是没有具体的配置,只能显示个默认页,显示不是我们想要的。
用ssh登录到debian之后,把容器内的配置文件复制一份到主机里。
docker cp nginx:/etc/nginx /usr/local/etc/ docker cp nginx:/usr/share/nginx/html /var/www/
把docker内的配置复制到主机来,这样我们就可以在主机内修改这些配置文件了。
5,由于我们把容器内的配置文件复制到主机内,为了要让容器能读取这些文件,我们还需要在主机和容器之间架一个桥梁。
在列表中点一下容器的名字,再点Duplicate/Edit进行编辑
在高级设置选项里面,找到Volumes
点两下map additional volume,会出来两组空行。
container指的是容器内的路径,host指的是主机的路径,Bind的意思是可以自定义路径。
/usr/share/nginx/html:是容器内的html默认的路径,我们映射到主机的/var/www/html里面。
/etc/nginx是容器内的配置目录,我们映射到主机的/usr/local/etc/nginx里面
每次要修改、增加配置时,我们只需要在主机里修改就行了,重启nginx后,容器里会同步读取这个新的配置
6,测试一下,输入ip地址,如果出现错误,可以自己建一个测试页
nano /var/www/html/index.html <h1>aaaaa</h>
应该可以顺利打开测试页了
到此,nginx就已经完成安装了。
二,php的安装
1,Name填php81,镜像名字:php:fpm
2,端口映射:host---9000,container----9000
3,Volumes映射,host----/var/www/html,container----/var/www/html
4,点Deploy
5,测试一下php是否能用。增加一个php文件,用ssh登录debian
nano /var/www/html/index.php
写入
<?php phpinfo(); ?>
修改一下nginx的配置文件,/usr/local/etc/nginx/conf.d/default.conf,这个默认文件里面,php是被注释了的,所以现在还打不开php文件。
location ~ \.php$ { root html; fastcgi_pass 192.168.0.9:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name; include fastcgi_params; }
fastcgi_pass这里写debian的ip,fastcgi_param这里,要写映射的目录名字,否则会出现错误。
三,maiadb的安装
1,Name填mariadb,镜像名字:mariadb
2,Volumes映射,host----/var/lib/mysql,container----/var/lib/mysql
3,高级设置Evn里,增加两项
MARIADB_USER:用户名
MARIADB_ROOT_PASSWORD:密码
4,Network选host
5,点Deploy
四,phpmyadmin的安装
1,Name填phpmyadmin,镜像名字:phpmyadmin
2,端口映射:host---8070,container----80。host这里,自己选个喜欢的就行
3,高级Env下面,增加一项
PMA_HOST:写debian的ip
4,点Deploy
5,在浏览器中打开192.168.0.9:8087,输入mariadb的用户名和密码,即可登录数据库。