使用 docker 搭建 lnmp

使用 docker 搭建 lnmp

1. 创建 php

## 先创建一个 php 将 php.ini 拿出来
docker run -d --name php php:7.1-fpm
docker cp php:/usr/local/etc/php/php.ini-development /usr/local/php/etc/php.ini
## 书写 dockerFile
-------------------------------------
#基于镜像文件php:7.1-fpm构建
FROM php:7.1-fpm
#复制上下文目录的php配置文件
COPY php.ini /usr/local/etc/php/php.ini 
#使用镜像提供的安装扩展的快捷操作安装pdo_mysql扩展
RUN docker-php-ext-install pdo_mysql 
-------------------------------------
docker build -t php:lnmp -f /var/docker/lnmp/php_dockerfile .
docker run -d --name php -p 9000:9000 -v /opt/www:/www php:lnmp  # 注意 /www 为网络文件目录,html php等

2. 确保在同一网络下

docker network create --driver bridge lnmp #新建一个桥接网卡,名为lnmp
docker network connect lnmp php #php容器连接网卡lnmp
docker network connect lnmp nginx #nginx容器连接网卡lnmp
docker network ls #查看网卡列表
docker network inspect lnmp #查看网卡lnmp详情

3. 修改配置文件

server {
    listen       80;
    location / {
        root   /www;
        index  index.php index.html index.htm;
    }
    location ~ \.php$ {
        root           /www;
        fastcgi_pass   php:9000;  # php 为容器名
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}




-----------------------------
<?php		# 编写 index.php 测试
phpinfo();
-----------------------------

4. 创建 mariadb

docker run -d --name db --network lnmp -p 3306:3306 -v /opt/db_data:/var/lib/mysql -v /opt/db_conf:/etc/mysql --env MARIADB_USER=admin --env MARIADB_PASSWORD=1 --env MARIADB_ROOT_PASSWORD=1  mariadb:10.5
## 检测

create table student(
        id int not null primary key auto_increment comment '主键ID',
        name varchar(20) not null comment '姓名',
        age int not null comment '年龄'
)engine=InnoDB default charset=utf8 comment '学生数据表';
 
insert into student(name, age) values('小明', 18);
insert into student(name, age) values('啊俊', 28);
-------------------------------------
<?php
$dsn = 'mysql:dbname=test;host=mysql';
$user = 'root';
$password = '123456';
 
try {
    $dbh = new PDO($dsn, $user, $password);
    $sql = 'SELECT * FROM student where id=?';
    $sth = $dbh->prepare($sql);
    $sth->execute([2]);
    $result = $sth->fetch(PDO::FETCH_ASSOC);
    var_dump($result);
} catch (PDOException $e) {
    echo 'Error: ' . $e->getMessage();
}

你可能感兴趣的:(虚拟化技术,docker,php,容器)