docker环境部署nginx+php+mysql

因docker环境安装简单,本文是在已经安装好docker为环境前提下做其它操作的,

第一步:拉取docker镜像

  1. 拉取php7.3的镜像
    docker pull bitnami/php-fpm:7.3
  2. 拉取nginx镜像
    docker pull nginx:latest
  3. 拉取mysql 5.6镜像
    docker pull mysql:5.6

第二步: 运行容器

网站目录结构

/home/cszp网站目录
/usr/share/nginx/html容器目录结构

 

1)首先运行PHP容器

docker run --name php -d --restart=always -v /home/cszp:/usr/share/nginx/html -p 8000:9000  bitnami/php-fpm:7.3

命令说明
参数参数说明
--name  php容器命名为 php
-d后台运行容器,并返回容器ID
-p 8000:9000将本地(宿主机)8000端口映射到容器内9000
-v /home/cszp:/usr/share/nginx/html宿主机/home/cszp(网站源码存放处)挂载到容器中/usr/share/nginx/html中
bitnami/php-fpm:7.3php 7.3镜像

 

 

 

 

 

2)运行nginx容器

网站路径
路径
/home/cszp网站目录(与PHP挂载目录一致)
/www/docker/nginx/confNginx主配置文件nginx.conf是一个纯文本类型的文件
/www/docker/nginx/conf.ddefault.conf配置目录
/www/docker/nginx/log日志保护        

 

 

 

 

 

 

 2.1 新建目录

mkdir -p /www/docker/nginx/{conf,conf.d,logs}

2.2创建一个普通容器

docker run -itd --name web001 --link php nginx:latest

2.3 从容器中拷贝nginx配置文件

docker cp web001:/etc/nginx/conf.d/default.conf    /www/docker/nginx/conf.d
docker cp web001:/etc/nginx/nginx.conf  /www/docker/nginx/conf/

2.4 删除web001容器

docker rm -f web001

2.5 创建新的生产环境容器

docker run --name web001  -itd -v /home/cszp:/usr/share/nginx/html  -v /www/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -v /www/docker/nginx/conf.d:/etc/nginx/conf.d -v /www/docker/nginx/logs:/var/log/ngin -p 9980:80 --link php  nginx:latest

2.6 修改/www/docker/nginx/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.php index.html index.htm;
    }

    #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;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
    #   root           html;
        fastcgi_pass   php:9000; #php容器名或者php容器对应IP,容器重启后IP会变,容器名只要你不人为改变是不会变的
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name; #特别说明:这里的/usr/share/nginx/html要与php容器里映射的php脚本路径一致,否则php-fpm将找不到php脚本,会报404错误
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

 

3) 运行mysql容器

docker run -d --restart=always --name db  -p 9306:3306  \
-v /www/docker/mysql/conf:/etc/mysql  \
-v /www/docker/mysql/logs:/logs  \
-v /www/docker/mysql/data:/var/lib/mysql  \
--link  php  \
-e MYSQL_ROOT_PASSWORD=fkaf323sdafsafafsIdsaf  \
mysql:5.6
参数参数说明
--restart=always重启docker时,自动启动相关容器。
-e MYSQL_ROOT_PASSWORD=fkaf323sdafsafafsIdsaf配置数据库密码为fkaf323sdafsafafsIdsaf

 

 

 

 

4)通过访问web001容器IP快速访问网站

 当时在/home/cszp目录,中需要建立index.php文件

echo "<?php  phpinfo(); ?>" >> /home/cszp/index.php

 假定容器IP是172.17.0.3,在宿主机可以通过该IP可以直接访问也可以通过宿主机:端口号访问

比如对外IP是:150.158.100.100,可以直接通过:150.158.100.100:9980直接访问

有什么不对或者错误的地方,欢迎各位批评指正!!!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Docker是一种容器化技术,可以将应用程序及其依赖项打包成一个独立的、可移植的容器。一键部署PHPNginxMySQLDocker环境可以简化环境配置和部署过程,提高开发和部署效率。 首先,我们需要创建一个Dockerfile,用于描述容器的构建过程。该文件指定了基础镜像、安装的软件包和配置等信息。例如,基础镜像可以选择官方提供的PHPNginx镜像,然后通过命令安装MySQL和其他依赖项。 接下来,我们可以使用Docker Compose来定义和管理多个容器部署。在docker-compose.yml文件中,我们可以指定应用程序需要的所有服务,包括PHPNginxMySQL等。通过一键部署命令,Docker Compose会自动下载镜像、创建容器,并配置它们之间的网络连接。 例如,以下是一个示例的docker-compose.yml文件: ```yaml version: '3' services: nginx: image: nginx ports: - 80:80 volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf depends_on: - php php: image: php volumes: - ./app:/var/www/html mysql: image: mysql ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD=your_password - MYSQL_DATABASE=your_database ``` 在这个例子中,Nginx容器映射主机的80端口到容器的80端口,通过挂载本地的nginx.conf文件来配置NginxPHP容器将本地的app目录挂载到容器的/var/www/html目录,MySQL容器暴露主机的3306端口,并配置了MySQL的root密码和数据库名。 最后,我们只需在项目的根目录下运行一条命令即可一键部署整个环境: ``` docker-compose up ``` 这条命令会根据docker-compose.yml文件的配置,自动下载所需的镜像并创建相应的容器,完成容器化的PHPNginxMySQL环境部署。之后,我们就可以访问Nginx的80端口来访问应用程序了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值