docker 部署 nginx+php+mysql 环境

这篇具有很好参考价值的文章主要介绍了docker 部署 nginx+php+mysql 环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

记录一下docker部署web服务器流程。nginx,mysql,php不同的版本配置内容可能会不同。


docker常用命令

一、创建挂载目录

  • 目录结构

└── data
    ├── docker
    │   ├── mysql  
    |       ├── conf
    |       ├── data
    |       └── logs
    │	├── php
    |       ├── conf.d
    |       └── php.ini(文件)
    │   ├── nginx
    |       ├── conf.d
    |       └── cert
    |       ├── log
    |       └── nginx.conf(文件)
    ├── www
    │   ├── project
    |       ├── index.php(文件)
    │   ├── project02

  • 创建目录
#挂载 nginx 目录
mkdir -p /data/docker/nginx/conf.d 		      #nginx子配置文件目录 
mkdir -p /data/docker/nginx/log 		      #nginx日志文件目录
mkdir -p /data/docker/nginx/cert          	  #nginxSSL文件目录
mkdir -p /data/www/ 					      #工作目录

#挂载 php 目录
mkdir -p /data/docker/php/conf.d   #php-fpm配置文件目录

#挂载 mysql 目录
mkdir -p /data/docker/mysql/conf   #mysql配置文件目录
mkdir -p /data/docker/mysql/logs   #mysql日志文件目录
mkdir -p /data/docker/mysql/data   #mysql数据文档存储目录

二、拉取镜像

#获取 ngin x镜像(未指定版本则安装latest)
docker pull nginx

#获取 mysql 镜像
docker pull mysql:5.7

#获取 php-fpm 镜像
docker pull php:7.3-fpm

#查看镜像
docker images

三.运行容器

  • 运行PHP容器
#首先我们先简单的将容器启动,将容器内的php.ini和扩展文件复制到宿主机中
#容器启动会返回容器id,我们先假设容器id为:575be6407893 后面理解方便 ,后续使用中可以直接取容器前几位字符使用
docker run -d --name php -p 9000:9000  php:7.3-fpm

# 查看正在运行的容器
docker ps 575b 

#查看全部容器
docker ps -a

#进入容器内
docker exec -it 575b bash

#进入php.ini配置目录
cd /usr/local/etc/php

php容器内容目录结构如下:
docker php mysql nginx,docker,docker,nginx,php,mysql

PHP5.4升级后,php.ini-dist不见了,出现了php.ini-developmen和php.ini-production。
php.ini-development 对应于 php.ini-dist,适合开发测试,如本地测试环境。
php.ini-production 对应于 php.ini-recommended 拥有较高的安全性设定,适合服务器上线运营当产品。
选择用哪个,就把他备份一份,改名为php.ini。

#将容器内conf.d和php.ini-production复制到宿主机内
docker cp 575b:/usr/local/etc/php/conf.d /data/docker/php/
docker cp 575b:/usr/local/etc/php/php.ini-production /data/docker/php/php.ini

#配置文件已有,接下来我们将该容器删除重新启动新容器
docker rm -f 575b (删除正在运行的容器)

#容器启动
docker run --name php7.3 -p 9000:9000 \
	-v /data/www:/var/www \
	-v /data/docker/php/php.ini:/usr/local/etc/php/php.ini \
	-v /data/docker/php/conf.d:/usr/local/etc/php/conf.d -d php:7.3-fpm
	
# 参数说明
# --name php7.3:容器名称。
# -p 9000:9000: 端口进行映射,将本地 9000端口映射到容器内部的 9000端口。
# -v 目录映射: 主机和容器的目录映射关系,":"前为主机目录,之后为容器目录 :ro 表示只读
# -d php:7.3-fpm: 设置容器在在后台一直运行,这个php:7.3-fpm是指定镜像	
  • 运行Nginx容器
 #复制nginx配置项  返回容器id:095a12add634
docker run -d -p 80:80 -p 443:443 --name nginx nginx 

#进入容器内
docker exec -it 095a12add634bash

#进入nginx.conf配置目录
 cd /etc/nginx/

nginx容器内容目录结构如下:

docker php mysql nginx,docker,docker,nginx,php,mysql文章来源地址https://www.toymoban.com/news/detail-856789.html

#将容器内conf.d和nginx.conf复制到宿主机内
docker cp 095a12add634:/etc/nginx/nginx.conf /data/docker/nginx/
docker cp 095a12add634:/etc/nginx/conf.d /data/docker/nginx/

#配置文件已有,接下来我们将该容器删除重新启动新容器
docker rm -f 095a12add634(删除正在运行的容器)

#容器启动
docker run -d -p 80:80 -p 443:443 \
-v /data/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /data/docker/nginx/conf.d:/etc/nginx/conf.d \
-v /data/docker/nginx/log:/var/log/nginx \
-v /data/docker/nginx/cert:/etc/nginx/cert \
-v /data/www:/var/www \
--link=php:php --name nginx nginx 
	
# 参数说明
# --link=php:php 设置 nginx容器和php容器网络互通,也可以使用网络通讯创建网桥方式
# 映射文件目录时尽量要使nginx和php映射目录保持一致,我这里都映射了/var/www,不一致可能会报错
  • 运行Mysql容器
#运行命令生成my.cnf文件
tee /data/docker/mysql/conf/my.cnf <<-'EOF'

[mysql]
#设置mysql客户端默认字符集
default-character-set=UTF8MB4
 
[mysqld]
#设置3306端口
port=3306
 
#允许最大连接数
max_connections=200
 
#允许连接失败的次数
max_connect_errors=10
 
#默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
 
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=UTF8MB4
 
#开启查询缓存
explicit_defaults_for_timestamp=true
 
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
 
#等待超时时间秒
wait_timeout=60
 
#交互式连接超时时间秒
interactive-timeout=600
secure_file_priv=/var/lib/mysql
 
[client]
default-character-set=UTF8MB4
EOF

#运行容器 
docker run  --privileged -d -p 3306:3306 \
-v /data/docker/mysql/conf:/etc/mysql \
-v /data/docker/mysql/logs:/var/log/mysql \
-v /data/docker/mysql/data:/var/lib/mysql  \
-e MYSQL_ROOT_PASSWORD=root --name mysql3306 mysql:5.7

#参数说明
#--privileged 让容器中的进程获取到主机的完整权限,包括root权限
#-e MYSQL_ROOT_PASSWORD=root 配置mysqlroot密码

四.运行项目

#nginx.conf 文件配置内容

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


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/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

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

#切换目录 cd /data/docker/nginx/conf.d 新建项目配置

server {
    listen 80;
    #listen [::]:80;

    #For https
    #listen 443 ssl;
    #listen [::]:443 ssl ipv6only=on;
    #ssl_certificate /etc/nginx/ssl/www.crt;
    #ssl_certificate_key /etc/nginx/ssl/www.key;

    server_name abc.com; #访问域名
    index index.php index.html index.htm default.html default.htm default.php;
    root  /var/www/project; #访问项目目录

    location ~ \.php$ {
        fastcgi_pass   php:9000; # 这里的php指链接到php的容器名称,即 --link=php:php 
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
	#错误日志
    access_log  /var/log/nginx/project.access.log; 
    error_log  /var/log/nginx/project.error.log;

}

#切换到项目目录随便输出点内容(内容自己创建)
cd /data/docker/www/project

#重启nginx容器
docker restart 容器id


到了这里,关于docker 部署 nginx+php+mysql 环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Docker的配置和部署,并搭建php和nginx环境

    服务器环境:CentOS 7.6 说下体验: 通过安装进度还是有些报错出现的,但是一向“兼容不错的宝塔”还是对他抱有一线希望。 最后还是安装成功了。  装好了,如何使用? Docker 是基于命令行使用的,那现在通过一些实际问题去使用一些命令! 1.首先查看是否安装成功。通过

    2024年02月09日
    浏览(43)
  • 傻瓜式教学Docker 使用docker compose部署 php nginx mysql

    首先你可以准备这个三个服务,也可以在docker compose 文件中 直接拉去指定镜像,这里演示的是镜像服务已经在本地安装好了,提供如下: PHP 日常用的扩展都有了应该, 这两个你也可以移到上面的RUN一同安装 Nginx Mysql 直接从官方镜像资源中拉去 这样你将产生三个镜像 下面开始利用

    2024年02月01日
    浏览(38)
  • 用MacBook实操:docker本地部署mysql+php+nginx坏境

    大家好,我拿出我的macbook,带着大家实操用docker部署mysql+php+nginx环境。 之前的小白实操搭建Nginx1.2.0+PHP7.0+MySQL5.7+Thinkphp5项目,看这篇就够了,欢迎阅读。 之前的是服务器上配置环境,现在在mac本地搭建全栈开发环境。 目录 1.docker 1.1docker下载: 1.2配置docker下载镜像 1.3 在本地

    2024年02月09日
    浏览(34)
  • Unbutu系统-Docker安装、JDK环境配置,Docker常用指令、Docker安装MySQL、Redis、Tomcat、Nginx,前端后分离项目部署

    目录 1、防火墙 1.1、查看防火墙状态 1.2、开启防火墙 1.3、关闭防火墙 1.4、重启防火墙 1.5、查看防火墙版本 2、安装JDK 2.1、官网下载tar包 2.3、解压tar.gz文件 2.4、配置环境变量 2.4.1、查看安装路径 2.4.2、设置环境变量 2.4.3、执行该让环境变量生效 2.4.4、查看JDK版本 3、Docker

    2024年02月04日
    浏览(47)
  • docker搭建nginx+php环境

    一、docker拉取nginx和php镜像 命令如下: 1、创建本地挂载路径: 2、创建php容器 3、创建nginx本地挂在路径: 4、nginx配置文件如下: 5、创建nginx容器: PS: 6、创建文件测试: 效果如下: 参考文章:nginx调用php原理

    2024年02月13日
    浏览(36)
  • 使用Docker容器部署java运行环境(java8 + mysql5.7 + redis5.0 + nginx1.14.1

    环境:阿里云ECS服务器 1.1 安装工具 1.2 为yum源添加docker仓库位置 1.3 将软件包信息提前在本地索引缓存 (非必要,建议执行,可以提升yum安装的速度,报错去掉fast试试) 1.4 安装Docker 傻瓜式安装 点击y 1.5 启动Docker 1.6 设置开机自启动 1.7 安装完成后可以测试一下,是否安装成功

    2024年02月02日
    浏览(66)
  • 使用docker-compose.yml快速搭建开发、部署环境(nginx、tomcat、mysql、jar包、各种程序)以及多容器通信和统一配置

    image 镜像名称,可去镜像市场查找自己需要的 hostname 容器内服务名 container_name 容器名 volumes 可以把自己电脑的路径映射到容器中的文件夹中 networks 写同一个网络可以让容器之间进行通信 启动 在项目根目录的命令行中输入 docker-compose up 停止 在项目根目录的命令行中输入 d

    2024年02月12日
    浏览(44)
  • macOS搭建PHP开发环境(brew安装nginx、mysql 和多版本php,并配置多个php同时运行的环境)

    由于homebrew主库中没有PHP7.2 之前的版本,并且7.2,7.3版本也被标记成过时版本;所以需要先挂在第三方的扩展,具体操作如下: php5.6 php7.3 php7.4 php8.2 默认新版8以上直接安装 sudo vim /usr/local/etc/php/5.6/php-fpm.conf  下的: 注意:5.6版本的配置文件路径和其他版本不一样 listen = 127

    2024年02月04日
    浏览(60)
  • docker搭建lnmp(nginx+mysql57+php7.4)

    2.1安装docker-compose 2.2创建项目目录 2.3在项目目录下面创建docker-compose.yml 2.4在该目录下面创建nginx目录,然后创建 default.conf 配置文件 2.5在该目录下面创建web目录,然后创建 index.php 文件 2.6启动docker-compose 2.7访问 2.8停止docker-compose 2.9删除docker-compose 3.0查看docker-compose日志 3.1查

    2024年02月13日
    浏览(32)
  • Nginx环境搭建以及Docker环境部署

    目录 Nginx环境搭建 1.首先创建Nginx的目录并进入 2.下载Nginx的安装包         可以通过FTP工具上传离线环境包,也可通过wget命令在线获取安装包         没有wget命令的可通过yum命令安装  3.解压Nginx的压缩包 4.下载并安装Nginx所需的依赖库和包         安装方式一    

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包