标签:image div 创建 挂载 val 就是 png 查询 inux
pip install docker-compose
安装docker-compose会发现在之后的build中一直出错/usr/local/bin
的位置,然后利用docker-compose --version
查询当前版本号,返回版本号说明安装成功/home/ubuntu/docker-compose-lamp
目录下FROM mysql:5.7
#作者信息
MAINTAINER by Ra9zer
#设置不允许免密登录
ENV MYSQL_ALLOW_EMPTY_PASSWORD no
FROM httpd
# 作者信息
MAINTAINER Ra9zer
# 最后暴露2422端口
EXPOSE 2422
# Dockerfile中开头为#号的为注释,至此Dockerfile编写完成
FROM php:7.4-fpm
# 作者信息
MAINTAINER Ra9zer
RUN apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev && docker-php-ext-install pdo_mysql && docker-php-ext-configure gd --with-freetype --with-jpeg && docker-php-ext-install -j$(nproc) gd
FROM phpmyadmin/phpmyadmin
# 作者信息
MAINTAINER Ra9zer
EXPOSE 8080
version: ‘3.7‘
services:
#构建mysql服务
mysql:
image: mysql #镜像名
container_name: LAMP_mysql #容器名
build:
context: .
dockerfile: MySql_dockerfile
ports:
- "3306:3306"
#构建php服务
web:
image: php
container_name: LAMP_php
build:
context: .
dockerfile: php_dockerfile
depends_on: #设置依赖的服务
- mysql
volumes:
- ./web/:/home/ubuntu/docker-compose-lamp/web/ #将主机中的目录挂载到容器中的工作目录
ports:
- "8080:80" #映射端口,格式为 "主机端口:容器端口"
#构建phpmyadmin服务
phpmyadmin:
image: phpmyadmin
container_name: LAMP_phpmyadmin
build:
context: .
dockerfile: phpmyadmin_dockerfile
environment:
PMA_HOST: LAMP_mysql #设置所连接的MySQL服务器名称
depends_on:
- mysql
- web
ports:
- "8081:80"
/home/ubuntu/docker-compose-lamp/web/
目录下<html>
<head>
<title>phpinfo</title>
</head>
<body>
<?php
echo phpinfo(); #显示php信息
?>
</body>
</html>
所有配置文件编写完后因在同一目录中
在文件目录/home/ubuntu/docker-compose-lamp/
下使用命令sudo docker-compose up --build
运行多容器成功
sudo docker ps
查看当前运行中容器,可以看到多容器都已同时上线
访问http://0.0.0.0:8080/
可以查看PHP信息来验证容器是否正确运行达到目标效果
在这里有个坑:就是一开始我的docker-compose.yml里的web的文件目录配置错误./web/:/home/ubuntu/docker-compose-lamp/web/
导致访问8080端口的时候会出现404的情况,后面百度查询了一下正确的挂载目录应该是./www/:/var/www/html/
index.php
文件内容<html>
<head>
<title>phpinfo</title>
</head>
<body>
<?php
$servername = "LAMP_mysql"; #数据库服务器名称为MySQL容器的名称
$username = "root";
$password = "123456";
try {
$conn = new PDO("mysql:host=$servername", $username, $password);
echo "数据库连接成功";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
</body>
</html>
MySql_dockerfile
或者docker-compose.yml
中声明ENV MYSQL_ROOT_PASSWORD 123456 #设置root下mysql登录密码
不然修改PHP文件也一辈子连不上数据库 (太难了。。。index.php
文件内容<html>
<head>
<title>phpinfo</title>
</head>
<body>
<?php
$servername = "LAMP_mysql"; #数据库服务器名称为MySQL容器的名称
$username = "root";
$password = "123456";
try {
$conn = new PDO("mysql:host=$servername", $username, $password);
// 设置 PDO 错误模式为异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "CREATE DATABASE myDBPDO";
// 使用 exec() ,因为没有结果返回
$conn->exec($sql);
echo "数据库创建成功<br>";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
</body>
</html>
index.php
文件内容<html>
<head>
<title>phpinfo</title>
</head>
<body>
<?php
$servername = "LAMP_mysql"; #数据库服务器名称为MySQL容器的名称
$username = "root";
$password = "123456";
$dbname = "myDBPDO";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// 设置 PDO 错误模式,用于抛出异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 使用 sql 创建数据表
$sql = "CREATE TABLE test (
`id` bigint(20) NOT NULL,
`name` varchar(255),
`score` int
)";
// 使用 exec() ,没有结果返回
$conn->exec($sql);
echo "数据表 test 创建成功";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
</body>
</html>
index.php
文件内容<html>
<head>
<title>phpinfo</title>
</head>
<body>
<?php
$servername = "LAMP_mysql"; #数据库服务器名称为MySQL容器的名称
$username = "root";
$password = "123456";
$dbname = "myDBPDO";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// 设置 PDO 错误模式,用于抛出异常
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO test (`id`, `name`, `score`)
VALUES
(2422,‘Ra9zer‘,‘100‘);";
// 使用 exec() ,没有结果返回
$conn->exec($sql);
echo "新记录插入成功";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
</body>
</html>
phpmyadmin
容器配置文件在前文已经给出,同时在docker-compose.yml
中已完整配置服务。0.0.0.0:8081
就可以登入compose.yml
配置文件内容又很多的样子。到后面摸索摸索着渐渐就感觉其实也并不难,到最后也能都理解清楚。但是这应该才是锻炼(折磨)的开始趴标签:image div 创建 挂载 val 就是 png 查询 inux
原文地址:https://www.cnblogs.com/fzu-Z9h/p/12854295.html