docker nginx
- 创建nginx容器,挂载配置文件和网站文件。
docker run -d --name docker-nginx --network my_docker_net -v D:\docker\nginx:/usr/share/nginx/html -v nginx_conf:/etc/nginx -p 80:80 nginx
docker run -d --name docker-nginx --network my_docker_net -v D:\docker\nginx\data:/usr/share/nginx/html -v D:\docker\nginx\config:/etc/nginx/conf.d -p 80:80 nginx
windows卷挂载目录为:
\\wsl$\docker-desktop\mnt\docker-desktop-disk\data\docker\volumes\nginx_conf\_data
- 创建mysql容器
docker run --name docker_mysql --network my_docker_net -e MYSQL_ROOT_PASSWORD=123456 -v D:\docker\mysql_data:/var/lib/mysql -p 3307:3306 -d mysql
- 创建php容器
docker run -d --name docker-php-7.4-fpm --network my_docker_net -v D:\docker\nginx\data:/var/www/html -p 9000:9000 php:7.4-fpm
- 配置nginx
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.html index.htm index.php;
}
#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 /var/www/html;
fastcgi_pass docker-php-7.4-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
- 安装pdo,进入容器,执行
docker-php-ext-install pdo pdo_mysql
,重启容器
docker exec -it docker-php-7.4-fpm bash
- 新建php文件
<?php
$servername = "docker_mysql:3306"; // 数据库服务器地址
$username = "root"; // 数据库用户名
$password = "123456"; // 数据库密码
$database = "hyperf_test"; // 数据库名
try {
$pdo = new PDO("mysql:host=" . $servername. ";dbname=" . $database, $username, $password);//创建一个pdo对象
$pdo->exec("set names 'utf8'");
echo "mysql连接成功";
}
catch(PDOException $e) {
echo "mysql连接失败:error=> " . $e->getMessage();
}
$pdo = null;
- D:\docker\nginx\data下新建目录tp6-demo
D:\docker\nginx\data> composer create-project topthink/think=6.1.* tp6-demo
- 访问http://localhost/tp6-demo/public/index.php
- 创建redis容器
docker run --name docker_redis --network my_docker_net -d -p 6379:6379 -v D:\docker\redis:/data -v redis_conf:/etc/redis/redis.conf redis
docker cp docker_redis:/etc/redis/redis.conf d:\docker\redis\config
修改D:\docker\redis\config\redis.conf\redis.conf
bind 0.0.0.0
port 6379
dir /data
dbfilename dump.rdb
# 设置 Redis 密码
requirepass 123456
appendonly yes
# RDB 持久化配置
# 900 秒(15 分钟)内至少有 1 个键被修改时触发保存
save 900 1
# 300 秒(5 分钟)内至少有 10 个键被修改时触发保存
save 300 10
# 60 秒(1 分钟)内至少有 10000 个键被修改时触发保存
save 60 10000
删除旧容器,建立新的容器
docker rm -f 21f
docker run --name docker_redis --network my_docker_net -d -p 6379:6379 -v D:\docker\redis\data:/data -v D:\docker\redis\config\redis.conf\redis.conf:/etc/redis/redis.conf redis redis-server /etc/redis/redis.conf