本篇文章给大家带来的内容是关于Docker下部署LNMP工作环境的教程(详细步骤),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

普通PC环境也可以用以下配置,只是MYSQL那里换回mysql官方版本就可以。

Docker 安装$ curl -sSL get.docker.com | sudo sh

工作目录

/lnmp/conf 存放虚拟主机配置

/lnmp/data/mysql 存放mysql数据库数据

/lnmp/log 存放nginx、mysql日志

/lnmp/workspace 存放各种项目文件

/lnmp/.env 启动docker时的环境变量配置

/lnmp/docker-compose.yml 构建时的配置文件

/lnmp/php/Dockerfile 编译PHP配置文件

构建Nginx

创建项目

先创建一个静态文件index.html

/lnmp/workspace/default/index.html

Document

Hello, Docker!

添加构建时的环境变量

编辑.env文件SOURCE_DIR=./workspace

HTTP_HOST=80

NGINX_VERSION=alpine

NGINX_CONFD_DIR=./conf/conf.d

NGINX_CONF_FILE=./conf/nginx.conf

NGINX_LOG_DIR=./log

SOURCE_DIR=./workspace workspace文件夹挂载到nginx下的 /var/www/html

HTTP_HOST=80 宿主机的80端口映射到nginx下的80端口

NGINX_VERSION=alpine nginx镜像使用alpine版本

NGINX_CONFD_DIR=./conf/conf.d conf.d文件夹挂载到nginx下的/etc/nginx/conf.d

NGINX_CONF_FILE=./conf/nginx.conf nginx.conf挂载nginx的 /etc/nginx/nginx.conf

NGINX_LOG_DIR=./log

Nginx.conf

创建/lnmp/conf/nginx.conf文件user nginx;

worker_processes 1;

pid /var/run/nginx.pid;

error_log /var/log/nginx/nginx.error.log warn;

events {

worker_connections 1024;

}

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/nginx.access.log main;

sendfile on;

#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

include /etc/nginx/conf.d/*.conf;

}

配置虚拟主机

创建/lnmp/conf/conf.d/default.conf文件

注意: root下的路径必须是以/var/www/html开头,default是我们本地workspace下的一个文件夹server {

listen 80;

server_name localhost default-server;

root /var/www/html/default;

index index.php index.html index.htm;

access_log /var/log/nginx/nginx.localhost.access.log main;

error_log /var/log/nginx/nginx.localhost.error.log warn;

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

#

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

}

构建Nginx配置

编辑 docker-composer.yml

以下的${}都是上面.env文件里配置的变量version: "3"

services:

nginx:

image: nginx:${NGINX_VERSION}

ports:

- ${HTTP_HOST}:80

volumes:

- ${SOURCE_DIR}:/var/www/html/:rw

- ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw

- ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro

- ${NGINX_LOG_DIR}:/var/log/nginx/:rw

restart: always

启动Nginx

运行命令之后,访问树莓派的IP,正常的话会显示 Hello, Docker!$ docker-compose up

构建PHP

编辑/lnmp/.env添加PHP构建变量PHP_CONFIG_FILE=./conf/php.ini

PHP_FPM_CONFIG_FILE=./conf/php-fpm.conf

因php.ini配置有点长,可以在下面地址复制

php.ini

php-fpm.conf

添加Dockerfile

/lnmp/php/DockerfileARG PHP_VERSION

FROM php:${PHP_VERSION}-fpm

RUN apt update

RUN apt-get install -y \

libfreetype6-dev \

libjpeg62-turbo-dev \

libmcrypt-dev \

libpng-dev \

unixodbc-dev \

gcc g++ make autoconf libc-dev pkg-config

添加构建PHP

编辑 /lnmp/docker-compose.yml文件version: "3"

services:

nginx:

image: nginx:${NGINX_VERSION}

ports:

- ${HTTP_HOST}:80

volumes:

- ${SOURCE_DIR}:/var/www/html/:rw

- ${NGINX_CONFD_DIR}:/etc/nginx/conf.d/:rw

- ${NGINX_CONF_FILE}:/etc/nginx/nginx.conf:ro

- ${NGINX_LOG_DIR}:/var/log/nginx/:rw

restart: always

php:

build:

context: ./php

args:

PHP_VERSION: 7.2

volumes:

- ${SOURCE_DIR}:/var/www/html/:rw

- ${PHP_PHP_CONFIG_FILE}:/usr/local/etc/php/php.ini:ro

- ${PHP_FPM_CONFIG_FILE}:/usr/local/etc/php-fpm.d/www.conf:rw

cap_add:

- SYS_PTRACE

restart: always

networks:

- default

虚拟主机支持PHP解析

/lnmp/conf/conf.d/default.conf

下面fastcgi_pass php:9000的php,是指上面docker-compose.yml的一个service名称,可以用来针对某个项目指定PHP版本#...其它代码

location ~ \.php$ {

fastcgi_pass php:9000;

fastcgi_index index.php;

include fastcgi_params;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

}

添加文件

/lnmp/workspace/default/index.php<?php

echo ‘Hello, PHP!’;

启动预览

如果之前没有终止进程的, 可以ctrl + c终止之后再运行下面的命令。

如无意外,访问树莓派的IP会显示 Hello, PHP!.$ docker-compose up

添加PHP扩展

/lnmp/.env 添加变量,下面以swoole扩展演示,其它的扩展参考下面的操作就可以PHP_SWOOLE_VERSION=4.2.10

/lnmp/docker-compose.yml 添加变量php:

build:

context: ./php

args:

PHP_VERSION: 7.2

PHP_SWOOLE: ${PHP_SWOOLE_VERSION}

/lnmp/php/Dockerfile 下载并编译swoole# ...其它代码

ARG PHP_SWOOLE=false

RUN if [ ${PHP_SWOOLE} != false ]; then \

curl -O http://pecl.php.net/get/swoole-${PHP_SWOOLE}.tgz -L \

&& pecl install swoole-${PHP_SWOOLE}.tgz \

&& docker-php-ext-enable swoole \

;fi

重新编译

注意:Dockerfile有改动的话,必须加--build重新编译一次, 不然docker-compose up的时候不会生效$ docker-compose up --build

预览

编辑/lnmp/workspace/default/index.php保存,访问树莓派的IP,不出意外你可以找到swoole的扩展<?php

phpinfo();

构建MYSQL

MYSQL持久化

Docker容器服务删除了,保证数据不会丢失

创建/lnmp/data/mysql文件夹

构建时变量

编辑/lnmp/.env文件,添加mysql服务端口、登录密码与数据持久化文件夹。MYSQL_HOST_PORT=3306

MYSQL_PASSWORD=1234

MYSQL_DATA_DIR=./data/mysql

构建配置version: "3"

services:

#... 其它代码

mysql:

image: tobi312/rpi-mysql

ports:

- ${MYSQL_HOST_PORT}:3306

volumes:

- ${MYSQL_DATA_DIR}:/var/lib/mysql:rw

environment:

MYSQL_ROOT_PASSWORD: "${MYSQL_PASSWORD}"

启动

启动后,用数据连接工具测试,链接地址:树莓派IP 端口:3306 用户名:root 密码:1234$ docker-compose up

到此为止,属于你自己的LNMP工作环境已经做好了。

docker中lnmp访问php页面,Docker下部署LNMP工作环境的教程(详细步骤)相关推荐

  1. docker 中安装Jenkins-Jenkins持续化集成(GIT/maven/钉钉机器人)详细步骤

    Dokcker 中jenkins容器配置发布连接应用服务器 docker安装jenkins 如:192.168.86.129服务器中docker 部署jenkins >> 1. 拉取镜像 ...

  2. Ubuntu20.04下安装fabric2.4环境 从零开始超详细步骤【亲测有效】及Hyperledger Explorer安装

    可参考: Hyperledger Fabric2.3 环境搭建及Fabric 测试网络使用_小青蛙呱呱跳的博客-CSDN博客1.安装ubuntu20Download Ubuntu Desktop | ...

  3. mac php环境配置教程,Mac下搭建PHP 开发环境的教程(详细步骤)

    本篇文章给大家带来的内容是关于Mac下搭建PHP 开发环境的教程(详细步骤),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. php 的本地开发环境,搭建很简单,成功启动三个进程就可以 ...

  4. docker 利用docker拉取Nvidia/cuda官方镜像,部署深度学习环境

    利用docker拉取Nvidia/cuda官方镜像,部署深度学习环境 1.拉取Nvidia/cuda官方镜像 2.生成容器 3.在容器内安装深度学习环境 看完这篇博文,可以查看我总结的另一篇博文教程: ...

  5. linux怎么离线安装gcc文件夹,CentOS下离线安装gcc环境,图文详细,方法全面

    CentOS下离线安装gcc环境,图文详细,方法全面 下载 方式1:如果有网的虚拟机还没有安装,可以直接 yum install --downloadonly --downloaddir=/root/ ...

  6. android飞行模式开启wifi,手机在飞行模式下怎么使用WiFi? 飞行模式下开启WiFi的方法图文教程详细介绍[多图]...

    类型: 大小: 评分: 平台: 标签: 手机在飞行模式下怎么使用WiFi?相信很多朋友都还不太清楚吧?没关系,下面是友情小编搜集相关资料整理出来的手机在飞行模式下开启WiFi的方法图文教程详细介绍,希 ...

  7. linux pps 包 网卡,64位Ubuntu Linux 下安装和使用PPS网络电视的详细步骤

    亲自测试在Ubuntu 10.10下安装好了pps,详情请见这里 Ubuntu Linux下安装和使用PPS详细步骤及解决无声的问题,包括解决无声的问题,不过那是在32 位的Ubuntu Linux ...

  8. docker中使用git_如何在 Docker 中使用 Docker

    1. 典型适用场景 在 CI 中,通常会有一个 CI Engine 负责解析流程,控制整个构建过程,而将真正的构建交给 Agent 去完成.例如,Jenkins .GitLab 均是如此. 如下图, ...

  9. Linux中文件写保护,Linux_在Linux下创建写保护的文件的教程,假如你想对Linux中的一些重要 - phpStudy...

    在Linux下创建写保护的文件的教程 假如你想对Linux中的一些重要文件做写保护,这样它们就不能被删除或者被篡改成之前的版本或者其他东西,或者在其他情况下,你可能想避免某些配置文件被软件自动修改.使 ...

最新文章

  1. C#实现php的hash_hmac函数
  2. Permission denied
  3. 在WINCE5.0中应用CMD(比如运行PING命令)
  4. 转:微服务架构:BFF和网关是如何演化出来的?(这篇文章相当棒)
  5. mysql主要的收获_MySQL性能测试大总结
  6. SpringBoot FK-关联表查询(三)
  7. GridView 点滴
  8. (转) 基于Arcgis for Js的web GIS数据在线采集简介
  9. 截取台风后的图片_Python数据分析案例 | 台风最喜欢在我国哪个省市登陆
  10. 类型转为数字_JavaScript自动数据类型的转换
  11. ctfshow-网络迷踪-初学乍练( 离谱! 一张图判断飞机的目的地?)
  12. 你有什么难忘的出差经历?
  13. java Iterator源码
  14. kettle中Pan kitchen用法及bat写法
  15. zoj 3599 Game 博弈论
  16. java基于springboot高校后勤报修管理系统
  17. linux连接苹果鼠标,Linux 5.13添加对苹果Magic Mouse 2和微软SAM的支持
  18. 深井地下水监测测量仪
  19. javascript 倒计时插件
  20. Google Draco 源码解析

热门文章

  1. 窗口分析函数_3_生成不间断重复排名序号
  2. jmeter constant timer 如何添加_阿里巴巴在开源压测工具 JMeter 上的实践和优化
  3. xss攻击突破转义_WEB安全之XSS攻击方式与防御方式
  4. 公司软件AiDitron中涉及的英文单词及含义
  5. OpenCV—形态学运算定义与实现
  6. AAAI 2019 滴滴被收录论文全解读
  7. loadrunner通过使用libmysql.dll完成mysql的测试
  8. 利用.swp文件恢复源文件
  9. JS原型、原型链深入理解
  10. linux常用命令--diff