说明:
使用Docker好处这里就不多说了,虽然docker命令一样可以管理容器;但DockerCompose能更好的定义和运行多容器的操作。特别是使用docker-compose.yml可以快速构建管理多个Docker容器,通过使用docker-compose指令来启动、停止和重启应用,以及应用中的服务和所有依赖服务的容器。yml文件包含Compose使用的所有设置,用于配置镜像,容器,网络等。
本文主要讲述在ARM平台的ubuntu系统中,通过DockerCompose搭建LNMP环境,虽然只简单的创建了三个容器并运行。但举一反三,明白了操作流程,就可根据自己需要创建更多的容器,甚至生成自己的镜像,这将为工作提供很好的方便。
至于要为什么在这里发布这篇帖子,懂得都懂了。
姐妹篇教程,看这里:
ARM版Ubuntu通过DockerCompose搭建LAMP环境小白教程
https://hostloc.com/thread-888911-1-1.html
一、安装docker
参考文档:ubuntu安装docker文档:https://docs.docker.com/engine/install/ubuntu/
在新主机上首次安装Docker之前,需要设置Docker存储库。然后可以从存储库安装和更新Docker。
1、更新apt包索引并安装依赖包以允许apt通过HTTPS使用存储库:
$sudoapt-getupdate
$sudoapt-getinstall
apt-transport-https
ca-certificates
curl
gnupg
lsb-release
2、添加Docker官方的GPG密钥:
$curl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudogpg--dearmor-o/usr/share/keyrings/docker-archive-keyring.gpg
3、使用以下命令设置arm版docker稳定存储库。
$echo
"deb[arch=arm64signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]https://download.docker.com/linux/ubuntu
$(lsb_release-cs)stable"|sudotee/etc/apt/sources.list.d/docker.list>/dev/null
4、更新apt包索引,安装最新版本的Docker和containerd:
$sudoapt-getupdate
$sudoapt-getinstalldocker-cedocker-ce-clicontainerd.io
5、查看Docker版本确认安装成功:
$dockerversion
6、启用自动启动和启动。
systemctlenabledocker
systemctlstartdocker
二、安装DockerCompose
1、安装dockercompose:
$sudoapt installdocker-compose
以上会直接安装ubuntu资源库中的docker-compose,但版本比较低,默认为1.25.0-1,要安装最新版看下面操作。
2、安装最新版dockercompose(forarm):
安装arm版本的dockercompose,推荐使用linuxserver.io编译好的镜像脚本安装。执行以下两行命令即可:
$sudocurl-L--failhttps://raw.githubusercontent.com/linuxserver/docker-docker-compose/master/run.sh-o/usr/local/bin/docker-compose
$sudochmod+x/usr/local/bin/docker-compose
3、查看dockercompose版本确认安装成功:
$docker-compose--version
三、配置DockerCompose
参考目录树:
dk-app
├──docker-compose.yml
├──mysql #mysql配置文件及数据库目录,需将容器内配置文件复制过来,并作挂载
│ ├──my.cnf
│ └──data
├──apache2 #apache及php配置文件目录,需将容器内配置文件复制过来,并作挂载
│ ├──apache2.conf
│ ├──php.ini
│ └──sites-available
├──nginx #nginx配置文件目录,需将容器内配置文件复制过来,并作挂载
│ ├──nginx.conf
│ └──conf.d
│ └──default.conf
├──php #php配置文件目录,需将容器内配置文件复制过来,并作挂载
│ └──php-fpm.conf
├──log #日志目录,需挂载各应用目录才能生效
│ ├──mysql
│ └──apache,php…
├──certs #ssl证书
└──html #web目录
1、创建项目目录并进入:
$mkdirdk-app&&dk-app
2、配置docker-compose.yml文件:
$sudovimdocker-compose.yml
内容如下:
指定语法版本
version:3
services:
构建mysql服务
mysql:
image:biarms/mysql:5.7 #supportsmysqlforarm
#image:ubuntu/mysql #onlysupportsmysql8.0forarm,想装新版可使用此镜像
container_name:dk_mysql
restart:always
ports:
-3306:3306
volumes:
-mysql/datakkk:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD:my_secret_password
构建nginx服务
nginx:
image:nginx:latest
container_name:dk_nginx
restart:always
ports:
-8080:80
depends_on:
-php
-mysql
volumes:
-./html:/usr/share/nginx/html
构建php服务
php:
image:php:7.3-fpm
container_name:dk_php
restart:always
volumes:
-./html:/var/www/html
提醒:把多余的kkk去掉吧,我实在是无能为力了。
参数说明:
•image:建立容器使用的镜像及版本
•container_name:建立容器的名称
•restart:always:当Docker重启时,容器自动启动
•build:指定要使用的Dockerfile所在目录,DockerCompose会自动执行dockerbuild指令的动作
•ports:[hostPort]:[ContainerPort]:设定端口映射,即主机对外端口映射到容器内的端口
•volumes:[hostPath]:[containerPath]:将项目中的目录挂载到容器中指定的工作目录
•depends_on:依赖的服务
•environment:设定环境变量
3、运行服务:
$sudodocker-composeup-d
启动或重启所有服务,在yml文件所在目录下运行该命令(加-d选项后台启动)即可。首次执行命令将拉取service节点下配置的镜像,然后安装容器,启动服务。
4、测试服务:
1)测试nginx及php
nginx对php的支持,需要进入nignx容器修改default站点的配置文件,操作如下:
a)进入nginx容器:
$sudodocker-composeexecnginxsh
b)编辑default配置文件:
需要先安装vim:
aptupdate
aptinstallvim
vim/etc/nginx/conf.d/default.conf
取消掉php模块的注释,做如下修改,当然也可以直接粘贴进去:
location~.php${
root /var/www/html;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
include fastcgi_params;
}
c)修改完成,可以退出容器:
exit
d)创建web项目目录及测试文件:
$mkdirhtml
$sudoecho"
HelloWorld
">html/index.html$sudoecho"<?phpphpinfokkk();?>">html/phpinfo.php
提醒:把多余的kkk去掉吧,我实在是无能为力了。
在浏览器中分别访问server_ip:8080和server_ip:8080/phpinfo.php,将会看到HelloWorld及phpinfo的页面信息。
2)测试mysql:
进入mysql容器:
$sudodocker-composeexecmysqlbash
登录mysql查看版本:
mysqladmin-uroot-pversion
退出容器:
exit
5、查看当前运行的服务:
docker-composeps
后记:
以上只是简单的lnmp环境搭建,安装php扩展,优化nginx、php、mysql配置,绑定域名安装ssl证书这些gooogle一下,自己就操作就可以了。
纯手工打造,喜欢的就点赞收藏吧。。。
-----------------------------------------------------
网友回复:
有ARM的帮我试试,这个LNMP,自己的甲骨文一直开开不出ARM
一键WordPress博客安装脚本
curl-L git.io/lnmp.sh|bash
网友回复:
大佬,连备份、转移服务器什么的都一起来一份教程啊