网站首页 > 基础教程 正文
最近在研究温故加强docker容器的使用。前面使用宝塔安装了lnmp环境,并且安装了论坛flarum,现在分享一下如何通过docker容器将这个系统运行起来。
docker 及docker-compose 版本:
所用到的images为:
docker-compose 配置文件:
# cat docker-compose.yml
version: '3'
services:
nginx:
image: nginx:latest
ports:
- "18081:80"
volumes:
- /www/wwwroot/bbs-uat-2.test.com:/usr/share/nginx/html
- /www/server/nginx/conf.d:/etc/nginx/conf.d
- /www/wwwlogs:/var/log/nginx
depends_on:
- php-fpm
php-fpm:
image: php:8.3-fpm
volumes:
- /www/wwwroot/bbs-uat-2.test.com:/www
- /www/server/php/php.ini:/usr/local/etc/php/php.ini
depends_on:
- mysql
mysql:
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: dbnane
MYSQL_USER:dbuser
MYSQL_PASSWORD: dbpass
volumes:
- /www/server/mysql:/var/lib/mysql
说明:系统使用的数据库名,账户和密码根据实际填写。MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORD。
目录结构规划:
说明:/www/server 用来存放中间件的配置文件,如nginx,php,mysql等数据。
/www/wwwlogs 用来存放相关日志
/www/wwwroot 用来存放代码
nginx相关配置文件:
# pwd
/www/server/nginx/conf.d
[root@localhost conf.d]# cat flarum.conf
server
{
listen 80;
server_name _;
index index.php index.html index.htm default.php default.htm default.html;
root /usr/share/nginx/html/public;
#CERT-APPLY-CHECK--START
# 用于SSL证书申请时的文件验证相关配置 -- 请勿删除
#CERT-APPLY-CHECK--END
#允许跨域配置
#add_header 'Access-Control-Allow-Origin' '*';
#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
#error_page 404/404.html;
#SSL-END
#ERROR-PAGE-START 错误页配置,可以注释、删除或修改
error_page 404 /404.html;
#error_page 502 /502.html;
#ERROR-PAGE-END
#PHP-INFO-START PHP引用配置,可以注释或修改
#include enable-php-83.conf;
location ~ \.php$ {
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/public$fastcgi_script_name;
include fastcgi_params;
}
#PHP-INFO-END
#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
include conf.d/rewrite/rewrite_rule.conf;
#REWRITE-END
#禁止访问的文件或目录
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
{
return 404;
}
#一键申请SSL证书验证目录相关设置
location ~ \.well-known{
allow all;
}
#禁止在证书验证目录放入敏感文件
if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)#34; ) {
return 403;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*\.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
access_log /var/log/nginx/bbs-uat-2.test.com.log;
error_log /var/log/nginx/bbs-uat-2.test.com.error.log;
}
# cat rewrite/rewrite_rule.conf
# Pass requests that don't refer directly to files in the filesystem to index.php
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# Uncomment the following lines if you are not using a `public` directory
# to prevent sensitive resources from being exposed.
# <!-- BEGIN EXPOSED RESOURCES PROTECTION -->
# location ~* ^/(\.git|composer\.(json|lock)|auth\.json|config\.php|flarum|storage|vendor) {
# deny all;
# return 404;
# }
# <!-- END EXPOSED RESOURCES PROTECTION -->
# The following directives are based on best practices from H5BP Nginx Server Configs
# https://github.com/h5bp/server-configs-nginx
# Expire rules for static content
location ~* \.(?:manifest|appcache|html?|xml|json)$ {
add_header Cache-Control "max-age=0";
}
location ~* \.(?:rss|atom)$ {
add_header Cache-Control "max-age=3600";
}
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|mp4|ogg|ogv|webm|htc)$ {
add_header Cache-Control "max-age=2592000";
access_log off;
}
location ~* \.(?:css|js)$ {
add_header Cache-Control "max-age=31536000";
access_log off;
}
location ~* \.(?:ttf|ttc|otf|eot|woff|woff2)$ {
add_header Cache-Control "max-age=2592000";
access_log off;
}
# Gzip compression
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
application/atom+xml
application/javascript
application/json
application/ld+json
application/manifest+json
application/rss+xml
application/vnd.geo+json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/bmp
image/svg+xml
image/x-icon
text/cache-manifest
text/css
text/javascript
text/plain
text/vcard
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy;
php相关配置文件:如php.ini
容器启动后,可以将其拷贝出来到宿主机
docker cp flarum-php-fpm-1:/usr/local/etc/php/php.ini-production php.ini
同理,如果下载的php容器版本或者扩展没安装,可以在容器启动后,进入容器通过源码重新编译安装,或者重新构建一个容器。
docker-compose停止和启动,进入docker-compose.yml所在的目录:
docker-compose down //停止
docker-compose up -d //启动
查看容器是否都启动:
浏览器访问:
猜你喜欢
- 2025-05-03 【Docker】部署 Elasticsearch(docker运行elasticsearch)
- 2025-05-03 若依框架改造,阿里docker部署(若依框架开发教程)
- 2025-05-03 软件测试/测试开发丨必知必会的Docker 命令
- 2025-05-03 如何从主机复制文件到Docker容器(如何从主机复制文件到docker容器里)
- 2025-05-03 Windows搭建Agent开发平台-WSL2+Dify本地部署及开发指南
- 2025-05-03 docker安装prometheus和grafana(docker如何安装)
- 2025-05-03 从Docker容器复制文件到主机的方法
- 2025-05-03 在Debian Docker环境一键部署Dify:手把手教你搭建本地AI应用平台
- 2025-05-03 【Docker】部署Jira&Confluence
- 2025-05-03 精辟!阿里大牛泪解:docker镜像制作——构建企业镜像LAMP+BBS
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)