1, 用了别人现成的博客cms,发现现在都习惯自己打包环境了,学习了一下。
看了很多教程,并没什么用,docker和docker-composer的安装。
1, 建立一个目录,比如docker-composer, 记住,这个目录名就是你docker里面服务组的名字。
image.png
2, 然后你只需要在里面创建文件docker-compose.yml, 其内容是
version: "3"
services:
#本地镜像名称
nginx:
#云端拉取镜像名称
image: nginx
#映射目录
volumes:
- ./sites:/etc/nginx/conf.d
- ./www:/www
#网络名称, 注意这里只要设置成同一个网络名,他们互相之间就能通信了
networks:
- lnmp
# 依赖,nginx依赖php是因为,你配置文件里就有依赖php的配置
depends_on:
- php
#开启端口
expose:
- "80"
#映射端口
ports:
- "8080:80"
#以下是用户,权限,时间设置
user: root
privileged: true
environment:
- TZ=Asia/Shanghai
php:
image: kudang/php
volumes:
- ./www:/www
networks:
- lnmp
user: root
privileged: true
depends_on:
- mariadb
- redis
expose:
- "9000"
environment:
- TZ=Asia/Shanghai
mariadb:
image: mariadb
volumes:
- ./data/mariadb:/var/lib/mysql
networks:
- lnmp
expose:
- "3306"
environment:
- TZ=Asia/Shanghai
- "MYSQL_DATABASE=myBlog"
- "MYSQL_USER=myBlog"
- "MYSQL_PASSWORD=myBlog"
- "MYSQL_ROOT_PASSWORD=myBlog"
redis:
image: redis
volumes:
- ./data/redis:/data
networks:
- lnmp
expose:
- "6379"
networks:
lnmp:
配置就不讲了,比如mysql里面的用户设置,一眼就能看懂,更多参数参考文档。 就是你docker run 时一切参数都能指定。
挨个看下参数意思。值得一提的是,官方的docker镜像下载速度慢,我们一般配置成阿里的。但你去阿里搜索镜像,其实找不到kudang/php,猜测是阿里直接引用的官方镜像,做了某种加速处理。
4,总结一下,只要有这个文件,直接
docker-composer up
然后就能获取图片上的服务集合,就这么简单。像data,www等目录都是自动生成的。
5, 还一点, 数据库配置,root的账号密码配置里面都有,然后当你代码里像连接数据库时
try {
$dbh = new PDO('mysql:host=mariadb;port=3306;dbname=mysql', 'root', 'myBlog');
foreach($dbh->query('SELECT * from user') as $row) {
print_r($row);
}
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
这里注意,重要的是你连接地址不用再写localhost, 或127.0.0.1,(实际上写了你也连接不上), 可直接写容器名字。这里的名字是docker-compose.yml里面配置的名字,不是图片上的名字。可以 docker ps查看下,是image的名字。
还有一个问题,是nginx, sites文件夹里,添加一个后缀为.conf的文件,比如de.conf, 内容是
server {
listen 80;
server_name localhost;
charset utf-8;
access_log /var/log/nginx/coreblog.access.log main;
root /www;
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 / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass php: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;
}
}
这个是你nginx的配置文件
我自己在
https://hub.docker.com/search?q=php-fpm&type=image
找到的
image: bitnami/php-fpm
镜像,是php7.4的
这个就很好玩,就比如说,我想换个php版本。把配置文件里面,改下php
image: phpdockerio/php7-fpm
然后执行命令
docker-compose up
在www.下简历index.php, 内容
<?php
phpinfo();
上面镜像php是7.0版本。 版本就换好了。有人和我杠说宝塔点下鼠标就完成了。 其实是不同的东西。这里比如要添加esearch,或 rabbitMQ, 配置文件里面添加,up,一下就完成。
网友评论