利用docker/docker-comose工具完成至少3种不同动态语言(PHP/Java/Python/Go/Perl/Nodejs...)运行环境的搭建,并实现从mysql/mongodb等数据库中读取数据到Web页面中显示。
时间: 2023-09-16 11:12:53 浏览: 175
好的,我将为您提供三个不同动态语言的示例,包括PHP、Python和Node.js,以及如何从MySQL和MongoDB数据库中读取数据并在Web页面中显示。
1. PHP + MySQL
首先,我们需要编写一个docker-compose.yml文件,其中包括PHP和MySQL容器的配置。我们需要使用官方的PHP和MySQL Docker镜像,将它们连接起来,并将PHP代码挂载到容器中。
```
version: '3.7'
services:
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: 'my_database'
MYSQL_USER: 'my_user'
MYSQL_PASSWORD: 'my_password'
MYSQL_ROOT_PASSWORD: 'my_root_password'
ports:
- '3306:3306'
volumes:
- database_data:/var/lib/mysql
php:
image: php:7.4-apache
ports:
- "8080:80"
volumes:
- ./php:/var/www/html
depends_on:
- db
volumes:
database_data:
```
接下来,我们需要编写一个PHP脚本来从MySQL数据库中读取数据并将其显示在Web页面上。我们可以使用mysqli扩展来连接MySQL数据库,并使用查询语句从表中检索数据。
```
<?php
// Connect to MySQL database
$servername = "db";
$username = "my_user";
$password = "my_password";
$dbname = "my_database";
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Retrieve data from MySQL database
$sql = "SELECT * FROM my_table";
$result = $conn->query($sql);
// Display data on web page
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"]. " - Name: " . $row["name"]. "<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
```
将上面的PHP脚本保存为index.php,并将其放入挂载到PHP容器的目录中。现在,我们可以通过在Web浏览器中访问http://localhost:8080来查看从MySQL数据库中检索的数据。
2. Python + MongoDB
对于Python和MongoDB,我们可以使用官方的Python和MongoDB Docker镜像。我们需要编写一个docker-compose.yml文件来设置Python和MongoDB容器,并将Python代码挂载到容器中。
```
version: '3.7'
services:
db:
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
ports:
- '27017:27017'
python:
image: python:3.9
ports:
- "8000:8000"
volumes:
- ./python:/app
depends_on:
- db
```
接下来,我们需要编写一个Python脚本来从MongoDB数据库中读取数据并将其显示在Web页面上。我们可以使用pymongo库来连接MongoDB数据库,并使用查询语句从集合中检索数据。
```
from pymongo import MongoClient
from flask import Flask, jsonify
app = Flask(__name__)
# Connect to MongoDB database
client = MongoClient("mongodb://root:example@db:27017/")
db = client["my_database"]
collection = db["my_collection"]
# Retrieve data from MongoDB database
@app.route('/')
def get_data():
data = []
for doc in collection.find():
data.append({"id": doc["id"], "name": doc["name"]})
return jsonify(data)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8000)
```
将上面的Python脚本保存为app.py,并将其放入挂载到Python容器的目录中。现在,我们可以通过在Web浏览器中访问http://localhost:8000来查看从MongoDB数据库中检索的数据。
3. Node.js + MySQL
对于Node.js和MySQL,我们可以使用官方的Node.js和MySQL Docker镜像。我们需要编写一个docker-compose.yml文件来设置Node.js和MySQL容器,并将Node.js代码挂载到容器中。
```
version: '3.7'
services:
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: 'my_database'
MYSQL_USER: 'my_user'
MYSQL_PASSWORD: 'my_password'
MYSQL_ROOT_PASSWORD: 'my_root_password'
ports:
- '3306:3306'
volumes:
- database_data:/var/lib/mysql
node:
image: node:14
ports:
- "3000:3000"
volumes:
- ./node:/app
depends_on:
- db
volumes:
database_data:
```
接下来,我们需要编写一个Node.js脚本来从MySQL数据库中读取数据并将其显示在Web页面上。我们可以使用mysql库来连接MySQL数据库,并使用查询语句从表中检索数据。
```
const express = require('express');
const mysql = require('mysql');
const app = express();
// Connect to MySQL database
const connection = mysql.createConnection({
host: 'db',
user: 'my_user',
password: 'my_password',
database: 'my_database'
});
connection.connect((err) => {
if (err) {
console.error('Error connecting to MySQL database: ', err);
return;
}
console.log('Connected to MySQL database!');
});
// Retrieve data from MySQL database
app.get('/', (req, res) => {
connection.query('SELECT * FROM my_table', (err, rows, fields) => {
if (err) {
console.error('Error retrieving data from MySQL database: ', err);
return;
}
const data = rows.map(row => ({ id: row.id, name: row.name }));
res.send(data);
});
});
app.listen(3000, () => {
console.log('App listening on port 3000!');
});
```
将上面的Node.js脚本保存为app.js,并将其放入挂载到Node.js容器的目录中。现在,我们可以通过在Web浏览器中访问http://localhost:3000来查看从MySQL数据库中检索的数据。
希望这些示例可以帮助您完成不同动态语言运行环境的搭建,并从MySQL和MongoDB数据库中读取数据并在Web页面中显示。
阅读全文