热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

dockercomple部署lnmp

安装docker-comple[rootdocker~]#mkdir-pcompose_lnmpphp[rootdocker~]#touchcompose_lnmpdocker

安装docker-comple

[root@docker ~]# mkdir -p compose_lnmp/php
[root@docker ~]# touch compose_lnmp/docker-compose.yml
[root@docker ~]# touch compose_lnmp/php/Dockerfile[root@docker ~]# wget -c https://github.com/docker/compose/releases/download/1.25.5/docker-compose-Linux-x86_64
[root@docker ~]# mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
[root@docker ~]# chmod a+x /usr/local/bin/docker-compose
[root@docker ~]# docker-compose --version
docker-compose version 1.25.5, build 8a1c60f6

创建相应的文件和目录

[root@docker ~]# tree compose_lnmp/
compose_lnmp/
├── docker-compose.yml
└── php└── Dockerfile1 directory, 2 files

编辑php/Dockerfile

[root@docker ~]# vim compose_lnmp/php/Dockerfile
FROM php:7.0-fpm
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezone
RUN apt-get update && apt-get install -y \libfreetype6-dev \libjpeg62-turbo-dev \libmcrypt-dev \libpng-dev \libmemcached-dev \zlib1g-dev \libcurl4-openssl-dev \libxml2-dev \--no-install-recommends && rm -rf /var/lib/apt/lists/* \&& docker-php-ext-install -j$(nproc) \iconv mcrypt gettext curl mysqli pdo pdo_mysql zip \mbstring bcmath opcache xml simplexml sockets hash soap \&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \&& docker-php-ext-install -j$(nproc) gdCMD ["php-fpm", "-F"]

编写docker-compose.yml

[root@docker ~]# vim compose_lnmp/docker-compose.yml
version: "3"services:mysql:hostname: mysqlrestart: alwaysimage: mysqlcontainer_name: mysqlports:- "3306:3306"volumes:- mysql-config:/etc/mysql- mysql-log:/var/log/mysql- mysql-data:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: 123456MYSQL_USER: userMYSQL_PASSWORD: user123php:hostname: phprestart: alwayscontainer_name: phpbuild:context: ./phpdockerfile: Dockerfileports:- "9000:9000"links:- mysql:mysqlvolumes:- nginx-html:/var/www/html- php-config:/usr/local/etcnginx:hostname: nginxrestart: alwayscontainer_name: nginximage: nginxports:- "80:80"- "443:443"links:- "php:php"volumes:- nginx-config:/etc/nginx- nginx-log:/var/log/nginx- nginx-html:/usr/share/nginx/htmlvolumes:mysql-config:mysql-log:mysql-data:nginx-html:php-config:nginx-config:nginx-log:

启动服务

cd compose_lnmpdocker-compose up -d 启动
docker-compose restart 重启

查看容器

[root@docker compose_lnmp]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f8c18829cabf nginx "/docker-entrypoint.…" 11 seconds ago Up 9 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx
72176d819d74 compose_lnmp_php "docker-php-entrypoi…" 3 minutes ago Up 3 minutes 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp php
ed1f8854128f mysql "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql

数据化持久目录

[root@docker compose_lnmp]# docker volume ls
DRIVER VOLUME NAME
local 03c7770fea6d9350f979847be29f2b8146303fbd48116618616628b3b77221a0
local 4e5fed374feab2035464fad478c611db71aa6e1174065fe31b8c4626c7c08ca7
local 7fc541df71d8c55675f12ecf92e219b3f2353b54533a10701443bb3fa17b6d71
local 8c79a13f19fe88e0ece1013cc5bc28bca0433bda2d61c3e67dac4b6f5f61bff8
local 9cc1ed86d97c0dc679e8bc41ec7c4b0d96ced9562b64e42c3583b1d2e854bafc
local 16fe9d63e0550065f430ac23bfebc44d90eec5905c7e4c30761aaa8372d146c8
local 401f58ed1ca49d98ad53ac052adda6865a32e3ba82135c869a490d469b6d6f6f
local 1397ed5ef8e78fb5fc52b8ffb4c4dce37ed809e8baedacccec43af05f7e5cd5b
local 75855c7759d263a7bd9b6ef1ecf5481e828c46d083e55eba199ebb780da57bfd
local 907641a94d3a3c4d83e4978a43d9f64575cd4457dfb2b9cf9374556002084f48
local 9872933f652693474acdb9d723376abe90b429801aa6ce1e398face00b1e708d
local a2e26dc94e5e02c4c69789c95a75d8d3d5f26fc7d206701ac9606620797949db
local compose_lnmp_mysql-config #数据库配置文件
local compose_lnmp_mysql-data #数据库数据文件
local compose_lnmp_mysql-log #数据库日志
local compose_lnmp_nginx-config #nginx配置文件
local compose_lnmp_nginx-html #nginx web目录
local compose_lnmp_nginx-log #nginx日志目录
local compose_lnmp_php-config #php配置文件
local e7d2f4821be653b47497c2670e1d33b691ace4c39f279057efda3ae91a3d21c0

配置php

#默认的php.ini文件是没有的,需要手动把模板配置文件复制为php.ini
[root@docker ~]# cd /var/lib/docker/volumes/compose_lnmp_php-config/_data/php
[root@docker php]# cp php.ini-production php.ini修改php.ini时区
[root@docker php]# vim php.in
date.timezone = Asia/Shanghai

配置nginx

[root@docker ~]# vim /var/lib/docker/volumes/compose_lnmp_nginx-config/_data/conf.d/default.conf
server {listen 80;listen [::]:80;server_name localhost;#access_log /var/log/nginx/host.access.log main;location / {root /usr/share/nginx/html;index index.html index.htm index.php; #此处添加index.php#取消注销并进行修改location ~ \.php$ {root html;fastcgi_pass php:9000; #php为容器的名字fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;include fastcgi_params;}

mysql测试

[root@docker ~]# docker container exec -it mysql bash
root@mysql:/# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.26 MySQL Community Server - GPLCopyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.26 |
+-----------+
1 row in set (0.01 sec)mysql>

验证php

[root@docker ~]# vim /var/lib/docker/volumes/compose_lnmp_nginx-html/_data/index.php
<?php phpinfo();

重启所有容器

[root&#64;docker ~]# cd compose_lnmp
[root&#64;docker compose_lnmp]# docker-compose restart
Restarting nginx ... done
Restarting php ... done
Restarting mysql ... done
[root&#64;docker compose_lnmp]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 128 0.0.0.0:443 0.0.0.0:*
LISTEN 0 128 0.0.0.0:9000 0.0.0.0:*
LISTEN 0 128 0.0.0.0:3306 0.0.0.0:*
LISTEN 0 128 127.0.0.1:1514 0.0.0.0:*
LISTEN 0 128 [::]:80 [::]:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 128 [::]:443 [::]:*
LISTEN 0 128 [::]:9000 [::]:*
LISTEN 0 128 [::]:3306 [::]:*

在这里插入图片描述


推荐阅读
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • macOS命令行创建Android模拟器
    macOS下不安装AndroidStudio使用VSCode来开发Flutter应用使用命令行创建和管理Android模拟器设备avdmanageravdmanager 是一种命令 ... [详细]
  • Linuxchmod目录权限命令图文详解在Linux文件系统模型中,每个文件都有一组9个权限位用来控制谁能够读写和执行该文件的内容。对于目录来说,执行位的作用是控制能否进入或者通过 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • Windows 7 部署工具DISM学习(二)添加补丁的步骤详解
    本文详细介绍了在Windows 7系统中使用部署工具DISM添加补丁的步骤。首先需要将光驱中的安装文件复制到指定文件夹,并进行挂载。然后将需要的MSU补丁解压并集成到系统中。文章给出了具体的命令和操作步骤,帮助读者完成补丁的添加过程。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • 本文介绍了Cocos2dx学习笔记中的更新函数scheduleUpdate、进度计时器CCProgressTo和滚动视图CCScrollView的用法。详细介绍了scheduleUpdate函数的作用和使用方法,以及schedule函数的区别。同时,还提供了相关的代码示例。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • 在加载一个第三方厂商的dll文件时,提示“找不到指定模块,加载失败”。由于缺乏必要的技术支持,百思不得期间。后来发现一个有用的工具 ... [详细]
  • Annotation的大材小用
    为什么80%的码农都做不了架构师?最近在开发一些通用的excel数据导入的功能,由于涉及到导入的模块很多,所以开发了一个比较通用的e ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • 本文主要介绍关于linux文件描述符设置,centos7设置文件句柄数,centos7查看进程数的知识点,对【Linux之进程数和句柄数】和【linux句柄数含义】有兴趣的朋友可以看下由【东城绝神】投 ... [详细]
author-avatar
人在做天在看1212_906
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有