docker compose部署nginx+php+mysql+phpmyadmin环境(LNMP环境)


同步发布在个人笔记docker compose部署nginx+php+mysql+phpmyadmin环境(LNMP环境)

docker compose 介绍与安装

docker-compose优点

已经有笔记记录了如何用docker搭建LNMP环境:DOCKER部署NGINX,PHP环境(步骤+注解),那为什么还要使用docker-compose呢?
考虑一个场景,我们搭建好了LNMPdocker环境,并且挂载/端口/网络都设置好了,但是在运行中我们发现有些容器配置需要改变,那我们只能docker stop container + docker rm container来删除此容器,然后用新的配置docker run。整个过程十分复杂。
但是通过docker-compose工具,我们就可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用;更重要的是,如果我们希望修改容器配置,只需修改compose配置文件重新一键部署即可。

docker-compose安装

下载docker-compose二进制文件至本地

sudo curl -L "https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

修改二进制文件的可执行权限并创建软链(软链不是必需)

sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试一下是否安装成功

docker-compose version

返回版本信息即表示成功了。

挂载目录准备

挂载目录和笔记DOCKER部署NGINX,PHP环境(步骤+注解)里一样,目录的准备方式也相同:先run一个辅助容器,把需要挂载的文件夹复制 到主机准备好的映射路径,然后删除辅助容器即可。
注:进入内部查询容器内部文件使用命令:

docker exec -it container_name/id bash

php-fpm

docker run -p your_port:9000 -d --name php.0 php:7.4-fpm
docker cp php.0:/usr/share/nginx/html/. your_web_page_path
docker cp php.0:/usr/local/etc/php/. your_php_config_path
docker stop php.0 && docker rm php.0

nginx

docker run --name nginx.0 -p 80:80 -p 443:443 -d nginx
docker cp nginx.0:/usr/share/nginx/html/. your_web_page_path
docker cp nginx.0:/etc/nginx/conf.d/. your_nginx_config_path
docker cp nginx.0:/var/log/nginx/. your_nginx_log_path
docker stop nginx.0 && docker rm nginx.0

mysql

docker run -itd --name mysql.0 -p your_port:3306 --restart unless-stopped -e MYSQL_ROOT_PASSWORD=yourpassword mysql
docker cp mysql.0:/var/log/mysql/. your_db_log_path
docker cp mysql.0:/var/lib/mysql/. your_db_data_path
docker cp mysql.0:/etc/mysql/. your_db_config_path
docker stop mysql.0 && docker rm mysql.0

phpmyadmin

docker run --name phpmyadmin.0 -d -e PMA_ARBITRARY=1 -e PMA_HOST=mysql_ip -e PMA_PORT=mysql_port -p your_port:80 phpmyadmin
docker cp phpmyadmin.0:/etc/phpmyadmin/. your_phpadmin_path
docker stop phpmyadmin.0 && docker rm phpmyadmin.0

具体命令含义及文件夹含义可见上面提到的笔记。
这样我们对于LNMP环境的端口和挂载文件路径都已经设定好了,下面就是编写compose文件并部署。

部署文件编写与部署

docker-compose.yml文件编写

我们需要一个文件夹来作为工作空间放置我们的配置文件,新建文件夹mkdir lnmp && cd lnmp并创建docker-compose.yml文件。
显然这是yaml格式的配置文件,对缩进标点比较敏感,一定要注意。
docker-compose.yml

# Creat containers for LNMP + phpmyadmin
version: '3'
services:
  php-fpm:
    image: php:7.4-fpm				# 镜像名
    container_name: php.1			#容器名
    restart: unless-stopped			#重启策略
    volumes:						#挂载路径
      - your_web_page_path:/usr/share/nginx/html
      - your_php_config_path:/usr/local/etc/php/
    environment:					#环境变量
      - TZ=Asia/Shanghai			#时区
    ports:
      - "your_port:9000"			#端口映射
    logging:						#日志设置
      driver: json-file
      options:
        max-size: "200k"
        max-file: "5"
  
  nginx:
    image: nginx
    container_name: nginx.1
    restart: unless-stopped
    depends_on:						#依赖关系,被依赖的服务先启动才会启动此服务
      - php-fpm
    volumes:
      - your_web_page_path:/usr/share/nginx/html
      - your_nginx_config_path:/etc/nginx/conf.d
      - your_nginx_log_path:/var/log/nginx
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "80:80"
      - "443:443"
    logging:
      driver: json-file
      options:
        max-size: "200k"
        max-file: "5"

  mysql:
    image: mysql
    container_name: mysql.1
    restart: unless-stopped
    volumes:
      - your_db_config_path:/etc/mysql
      - your_db_data_path:/var/lib/mysql
      - your_db_log_path:/var/log/mysql
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=yourpassword
    ports:
      - "your_port:3306"
    logging:
      driver: json-file
      options:
        max-size: "200k"
        max-file: "5"

  phpmyadmin:
    image: phpmyadmin
    container_name: phpmyadmin.1
    restart: unless-stopped
    volumes:
      - your_phpadmin_path:/etc/phpmyadmin
    environment:
      - TZ=Asia/Shanghai
      - PMA_ARBITRARY=1
      - PMA_HOST=mysql_ip
      - PMA_PORT=mysql_port
    ports:
      - "your_port:80"
    logging:
      driver: json-file
      options:
        max-size: "200k"
        max-file: "5"

compose字段简介

重启策略restart:有这么几种:

restart: no				#是默认的重启策略,在任何情况下都不会重启容器。
		 always			#容器总是重新启动。
		 on-failure		#在容器非正常退出时(退出状态非0),才会重启容器。
		 unless-stopped	#在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

compose部署及常用命令

部署命令很简单,在当前lnmp目录,运行

docker-compose up
#或者
docker-compose up -d

这样就运行成功了,上面四个容器都会被启动。
当我们需要修改配置时,就把compose down掉,修改docker-compose.yml文件,然后重启up起来就好

docker-compose down
docker-compose up -d
#或者
docker-compose up -d --force-recreate

LNMP环境配置及测试

nginx和php的配置就和上面提到的笔记一样,修改default.conf即可。mysql与phpmyadmin的测试方法如下:
mysql
进入mysql.1容器内部,尝试登录mysql即可

docker exec -it mysql.1 bash
#进入容器内部
mysql -u root -p
输入your_password
成功登陆mysql,并显示:
mysql>

在这里插入图片描述

phpmyadmin
浏览器登录your_ip:your_port
显示phpmyadmin的登录界面,并且能够登录mysql即可。
在这里插入图片描述
这样就大功告成啦。

  • 16
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值