news 2026/4/23 13:31:41

Docker容器实践——使用Dockerfile构建定制LNMP架构镜像并部署Wordpress应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker容器实践——使用Dockerfile构建定制LNMP架构镜像并部署Wordpress应用

Docker容器实践——使用Dockerfile构建docker镜像https://blog.csdn.net/xiaochenXIHUA/article/details/160341844

一、使用开源项目的Dockerfile构建镜像并运行

FileBrowser是一款好用的私有网盘系统,使用go语言编写的web软件;它实现了在指定目录内提供文件管理界面,可以用来上传、删除、预览和编辑你的文件。它支持使用二进制文件直接在系统中安装,也支持使用Docker容器安装。

#使用FileBrowser源码的Dockerfile文件构建镜像并运行为自己的私有网盘 #1-将FileBrowser源码下载到本地并进入该目录下 git clone https://github.com/filebrowser/filebrowser.git cd filebrowser/ #2-下载FileBrowser的二进制文件到指定目录并解压到当前目录下 wget https://github.com/filebrowser/filebrowser/releases/download/v2.63.2/linux-amd64-filebrowser.tar.gz -c -P /data tar -zxvf /data/linux-amd64-filebrowser.tar.gz -C . #3-使用FileBrowser的Dockerfile文件构建镜像 docker build -t filebrowser:ck-2026.04.21 . #4-运行FileBrowser的镜像【运行命令参考:https://filebrowser.org/installation.html#__tabbed_1_1】 #4.1-先创建FileBrowser存储到宿主机的目录并授权 mkdir -p /data/filebrowser-data cd /data/filebrowser-data/ mkdir {srv,database,config} chmod 777 srv database config chown -R 1000:1000 srv database config #4.2-运行构建好的filebrowser:ck-2026.04.21容器 docker run -d \ --name filebrowser \ -v ./srv:/srv \ -v ./database:/database \ -v ./config:/config \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Asia/Shanghai \ -p 8080:8080 \ --restart unless-stopped \ filebrowser:ck-2026.04.21 \ --port 8080 #4.3-查看运行容器及其日志(日志中会显示用户与临时密码) docker ps docker logs filebrowser #4.4-在浏览器输入【IP:8080】访问,能够显示FileBrowser的登录界面则表示成功 #使用默认用户【admin】与临时密码登录后需要修改密码

二、编写Dockerfile文件构建定制镜像

2.1、编写Dockerfile构建自己的基础Linux系统镜像

#构建自己的基础定制系统镜像 #1-编辑Dockerfile文件 vi Dockerfile #2-【Dockerfile】文件的完整内容 FROM centos:7.9.2009 #镜像的维护者 MAINTAINER coffeemilk.blog.csdn.net #配置系统国内可用的yum源(阿里云源) RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak \ && curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo \ && sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo \ && curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo \ && yum clean all && yum makecache #安装必须的软件库 RUN yum install -y wget gcc gcc-c++ glibc make autoconf openssl openssl-devel ntpdata crontabs #将本机的时区(Asia/Shanhai)复制到容器中 RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #3-构建镜像命令 docker build -t centos:ck-7.9 .

2.2、使用源码构建LNMP架构中的Nginx镜像

#1-首先创建nginx目录并下载需使用的nginx源码内容 mkdir nginx cd nginx/ wget https://nginx.org/download/nginx-1.30.0.tar.gz #2-【nginx.conf】(Nginx主配置)文件内容 user www; worker_processes auto; #日志/进程ID路径 匹配编译安装目录 error_log /usr/local/nginx/logs/error.log warn; pid /usr/local/nginx/logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; charset utf-8; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /usr/local/nginx/logs/access.log main; sendfile on; keepalive_timeout 65; # 加载子配置 include /usr/local/nginx/conf/conf.d/*.conf; } #3-【fastcgi_params】(Nginx默认文件)文件内容 fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REQUEST_SCHEME $scheme; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; #4-【www.conf】(站点配置)文件内容 server { listen 8081; server_name localhost; root /usr/local/nginx/html; index index.html index.htm index.php; location ~ \.php$ { root /usr/local/nginx/html; fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; }

使用源码安装配置Linux上的Web服务器——Nginx

#使用Dockerfile且用Nginx源码构建Nginx镜像 vi Dockerfile #【Dockerfile】完整文件 FROM centos:ck-7.9 #镜像的维护者 MAINTAINER coffeemilk.blog.csdn.net #使用源码构建Nginx #创建所需的www用户 RUN useradd -M -s /sbin/nologin www #复制nginx的源码包到/usr/local/src目录并解压 ADD nginx-1.30.0.tar.gz /usr/local/src #安装Nginx所需的依赖库 RUN yum install -y \ gcc gcc-c++ \ make \ pcre pcre-devel \ zlib zlib-devel \ openssl openssl-devel \ gd gd-devel \ GeoIP GeoIP-devel \ libxml2 libxml2-devel \ libxslt libxslt-devel \ libcurl-devel \ libpng libpng-devel \ libjpeg-turbo libjpeg-turbo-devel \ freetype freetype-devel \ perl perl-devel \ patch #设置工作目录 WORKDIR /usr/local/src/nginx-1.30.0 #配置并编译Nginx RUN ./configure \ --prefix=/usr/local/nginx \ --user=www \ --group=www \ --with-http_ssl_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_stub_status_module \ --with-http_auth_request_module \ --with-threads \ --with-stream \ --with-stream_ssl_module \ --with-http_slice_module \ --with-mail \ --with-mail_ssl_module \ --with-file-aio \ --with-http_v2_module \ --with-http_image_filter_module \ --with-http_geoip_module \ --with-http_xslt_module && make && make install #将宿主机上的Nginx的配置与网站配置复制到容器中 COPY nginx.conf /usr/local/nginx/conf/nginx.conf COPY fastcgi_params /usr/local/nginx/conf/fastcgi_params RUN mkdir /usr/local/nginx/conf/conf.d COPY www.conf /usr/local/nginx/conf/conf.d/www.conf #暴露端口 EXPOSE 8081 #容器启动时执行启动Nginx服务命令且以前台方式运行 CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"] #构建定制的Nginx镜像【若不想使用缓存可以在后面添加(--no-cache)】 docker build -t nginx:ck-1.30.0 . --no-cache

2.3、编写Dockerfile构建LNMP架构中的Mysql镜像

#使用Dockerfile且用rpm包构建Mysql镜像 vi Dockerfile #【Dockerfile】文件的完整内容 FROM centos:ck-7.9 MAINTAINER coffeemilk.blog.csdn.net COPY mysql-community-common-5.7.31-1.el7.x86_64.rpm /root/mysql-community-common-5.7.31-1.el7.x86_64.rpm COPY mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm /root/mysql-community-libs-compat-5.7.31-1.el7.x86_64.rpm COPY mysql-community-client-5.7.31-1.el7.x86_64.rpm /root/mysql-community-client-5.7.31-1.el7.x86_64.rpm COPY mysql-community-libs-5.7.31-1.el7.x86_64.rpm /root/mysql-community-libs-5.7.31-1.el7.x86_64.rpm COPY mysql-community-server-5.7.31-1.el7.x86_64.rpm /root/mysql-community-server-5.7.31-1.el7.x86_64.rpm COPY postfix-2.10.1-9.el7.x86_64.rpm /root/postfix-2.10.1-9.el7.x86_64.rpm WORKDIR /root RUN yum remove mysql-libs -y RUN yum -y install *.rpm ADD initialization.sql /root/initialization.sql ADD my.cnf /etc/my.cnf ADD setup.sh /root/setup.sh RUN yum clean all && rm -rf /root/*.rpm && chmod +x /root/setup.sh EXPOSE 3306 CMD ["/root/setup.sh"] #构建定制的mysql镜像【若不想使用缓存可以在后面添加(--no-cache)】 docker build -t mysql:ck-5.7.31 . --no-cache

2.4、编写Dockerfile构建LNMP架构中的PHP镜像

#使用Dockerfile与php源码构建镜像 vi Dockerfile #【Dockerfile】文件的完整内容 # base image FROM centos:ck-7.9 MAINTAINER coffeemilk.blog.csdn.net ADD libzip-1.3.2.tar.gz /usr/local/src WORKDIR /usr/local/src/libzip-1.3.2 RUN ./configure && make && make install ADD remi-release-7.7-2.el7.remi.noarch.rpm /usr/local/src WORKDIR /usr/local/src RUN yum -y install epel-release && rpm -ivh remi-release-7.7-2.el7.remi.noarch.rpm ADD php-7.4.10.tar.gz /usr/local/src RUN yum -y install libxml2 libxml2-devel bzip2 bzip2-devel libjpeg-turbo libjpeg-turbo-devel libpng libpng-devel freetype freetype-devel zlib zlib-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel sqlite-devel RUN yum -y install --enablerepo=remi install oniguruma5php oniguruma5php-devel WORKDIR /usr/local/src/php-7.4.10 RUN export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/" && ./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-zlib --with-curl --enable-gd --with-jpeg=/usr --with-freetype=/usr --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo -enable-tokenizer --with-zip && make && make install COPY php.ini-production /usr/local/php/etc/php.ini COPY php-fpm.conf /usr/local/php/etc/php-fpm.conf COPY www.conf /usr/local/php/etc/php-fpm.d/www.conf RUN useradd -M -s /sbin/nologin www EXPOSE 9000 CMD ["/usr/local/php/sbin/php-fpm"] #构建定制的php镜像【若不想使用缓存可以在后面添加(--no-cache)】 docker build -t php:ck-7.4.10 . --no-cache

三、使用定制的Docker镜像部署Wordpress应用

在docker中部署定制的mysql、nginx和php服务,然后在lnmp环境下部署wordpress内容发布系统,并实现对外访问。

部署过程:

1、通过基础镜像构建mysql、nginx、php镜像

2、通过本地卷实现数据持久化存储

3、通过docker容器构建lnmp环境

4、通过docker容器部署wordpress应用

#使用定制的LNMP镜像构建LNMP运行环境 #1-运行mysql容器 mkdir -p /data/lnmp/db cd /data/lnmp/db docker run -d --name mysql5.7 -v /data/lnmp/db:/var/lib/mysql -p 13306:3306 mysql:ck-5.7.31 #2-运行php容器(注意这里容器的名称到时候需要与nginx中www.conf中fastcgi_pass后的名称一致) mkdir -p /data/lnmp/www docker run -d --name php -v /data/lnmp/www:/usr/local/nginx/html --link=mysql5.7:mysql5.7 php:ck-7.4.10 #3-运行nginx容器 mkdir -p /data/lnmp/nginxlog mkdir -p /data/lnmp/conf cp /data/imagestest/lnmp/nginx/www.conf /data/lnmp/conf/ echo "coffeemilk make webserver for nginx1.30.0" > /data/lnmp/www/index.html echo '<?php phpinfo(); ?>' > /data/lnmp/www/phpinfo.php docker run -d --name nginxck -p 8081:8081 -v /data/lnmp/www:/usr/local/nginx/html -v /data/lnmp/nginxlog:/usr/local/nginx/logs -v /data/lnmp/conf:/usr/local/nginx/conf/conf.d --link=php:php nginx:ck-1.30.0 #4-在浏览器输入【IP:8081】访问,若显示“coffeemilk make webserver for nginx1.30.0”则nginx容器部署成功 #在浏览器输入【IP:8081/phpinfo.php】能够显示php的详情页面,则表示nginx能够解析php #5-部署wordpress #5.1-下载wordpress并解压 wget https://cn.wordpress.org/wordpress-6.9.4-zh_CN.tar.gz -c -P /data/lnmp/www cd /data/lnmp/www/ tar -zxvf wordpress-6.9.4-zh_CN.tar.gz #5.2-在浏览器输入【IP:8081/wordpress】即可访问(然后填写连接mysql数据库的信息:数据库名称【wordpress】、用户名【root】、密码【mysqlabc123】数据库主机是【mysql5.7】(之所以是这个名称是因为当前是在容器部署的,nginxck是通过该名称与数据库连接的)) #5.3-在服务器进入wordpress目录【/data/lnmp/www/wordpress】创建【wp-config.php】文件,并将浏览器显示的【wp-config.php 的配置规则】内容全部复制一份到该文件中

到这里恭喜你,表示自己构建LNMP的所有定制镜像,并安装wordpress应用完成!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 13:26:34

局域网组网技术

与为了互联全球不同网络而设计的、复杂的OSI七层模型不同&#xff0c;局域网参考模型更专注于解决一个局部区域内的网络通信问题。因此&#xff0c;它的结构被大大简化了。下图清晰地展示了局域网参考模型与OSI模型的关系&#xff1a;一、设计思想&#xff1a;简化与专注局域网…

作者头像 李华
网站建设 2026/4/23 13:26:32

Nacos的使用快速上手

下载的地址: https://github.com/alibaba/nacos/releases/tag/2.2.3 部署需要修改什么 打jar包的时候&#xff0c;先进行的是bootscrap 然后是application&#xff0c;所以说在bootscrap有的可以不在application 1.先创建多个配置文件 2.修改数据库的密码 application 配置那…

作者头像 李华
网站建设 2026/4/23 13:26:11

“礼崩乐坏”之后,大疆创始人汪韬更懂慢以致远

那个“我”字是毒药。文&#xff5c;段泽钰编&#xff5c;郭梦仪4月16日晚上八点&#xff0c;大疆pocket 4正式发售&#xff0c;多个平台秒空&#xff0c;现货溢价接近600元。这是大疆在20周年之际发布的重磅新品&#xff0c;市场用真金白银投出了信任票。爆款之后是业绩的提升…

作者头像 李华