Dockerfile 创建镜像,构建LNMP+wordpress架构

这篇具有很好参考价值的文章主要介绍了Dockerfile 创建镜像,构建LNMP+wordpress架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、Dockerfile 构建镜像

1.Dockerfile 构建 nginx镜像

1.1创建 nginx Dockerfile 目录

1.2编写 Dockerfile 文件

1.3构建nginx镜像

2.Dockerfile 构建 mysql 镜像

2.1创建 mysql Dockerfile 目录

2.2修改mysql配置文件

2.3编写 Dockerfile 文件

2.4构建mysql镜像

3.Dockerfile 构建 php 镜像

3.1创建 php Dockerfile 目录

3.2编写 Dockerfile 文件

3.3调整PHP配置文件

3.4构建php镜像

二、基于镜像创建容器

1.自定义网络 

2.创建容器

3.创建wordpress数据库

4.验证

三、部署 wordpress

一、Dockerfile 构建镜像

1.Dockerfile 构建 nginx镜像

1.1创建 nginx Dockerfile 目录

mkdir /opt/nginx
cd /opt/nginx
将源码包nginx-1.24.0.tar.gz上传到该目录

1.2编写 Dockerfile 文件

vim Dockerfile

#指定基础镜像文件
FROM centos:7
#ADD:将nginx压缩包复制到镜像中并且解压到/opt目录下
ADD nginx-1.24.0.tar.gz /opt
#RUN:在镜像中执行的命令。使用 && 将多条命令合并为1条,减少镜像大小
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make && \
cd /opt/nginx-1.24.0 && \
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install && \
yum clean all
#清除缓存,减少镜像大小的方法之一。

#多级构建镜像,FROM指定第二级基础镜像
FROM centos:7
#from=0:指定第一级镜像。将第一级镜像中的/usr/local/nginx 复制到当前阶段的/usr/local/nginx
COPY --from=0 /usr/local/nginx /usr/local/nginx
RUN useradd -M -s /sbin/nologin nginx
#暴露nginx的80号端口
EXPOSE 80
#指定nginx的启动命令
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

Dockerfile 创建镜像,构建LNMP+wordpress架构,架构,linux,服务器 注:

  1. dockerfile 中的每个 FROM、RUN、COPY 命令都会创建一个单独的层,并增加镜像的整体大小和构建时间。
  2. 要减小 docker 镜像大小,请在单个 RUN 或 COPY 指令中执行多个命令来最小化 Dockerfile 中的层数。
  3. Multi-stage build(多级构建镜像) 即在一个 Dockerfile 中使用多个 FROM 指令。 每个 FROM 指令可以使用不同的基础镜像,并且每一个都开启新的构建阶段。 你可以有选择地拷贝一个阶段的产品到另一个中,留下不想包含在最终 image 中的东西。

1.3构建nginx镜像

#自定义镜像名称,这里我设置的为 nginx:centos7
docker build -t nginx:centos7 .

#构建完成后,查看镜像
docker images

2.Dockerfile 构建 mysql 镜像

2.1创建 mysql Dockerfile 目录

mkdir /opt/mysql
cd /opt/mysql
将mysql-boost-5.7.20.tar.gz上传到目录下

#查看系统可用内存,最好大于15G
df -TH 

Dockerfile 创建镜像,构建LNMP+wordpress架构,架构,linux,服务器

2.2修改mysql配置文件

vim my.cnf

[client]
port = 3306
socket=/usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

2.3编写 Dockerfile 文件

vim Dockerfile

FROM centos:7
ADD mysql-boost-5.7.20.tar.gz /opt/
#安装依赖包并编译安装
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make ncurses ncurses-devel bison cmake
RUN cd /opt/mysql-5.7.20/ && \
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1 && \
make -j2 && make install


FROM centos:7
#将一级镜像中的/usr/local/mysql/保留下来
COPY --from=0 /usr/local/mysql/ /usr/local/mysql/
#mysql配置文件复制到镜像中
COPY my.cnf /etc/my.cnf
#设置镜像的环境变量
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
#创建mysql用户
RUN useradd -M -s /sbin/nologin  mysql && \
#修改/usr/local/mysql/和/etc/my.cnf的权限
chown -R mysql:mysql /usr/local/mysql/ && \
chown mysql:mysql /etc/my.cnf && \
#初始化mysql数据库
/usr/local/mysql/bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
#暴露mysql的端口号
EXPOSE 3306
#设置mysql启动命令
CMD ["/usr/local/mysql/bin/mysqld"]

Dockerfile 创建镜像,构建LNMP+wordpress架构,架构,linux,服务器

2.4构建mysql镜像

docker build -t mysql:centos7 .

docker images

3.Dockerfile 构建 php 镜像

3.1创建 php Dockerfile 目录

mkdir /opt/php
cd /opt/php
上传php-7.1.10.tar.bz2压缩包

3.2编写 Dockerfile 文件

vim Dockerfile
#设置一级镜像的别名为 first
FROM centos:7 AS first
ADD php-7.1.10.tar.bz2 /opt
RUN yum -y install gcc gcc-c++ make gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel && \
cd /opt/php-7.1.10 && \
./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip &&  make && make install
COPY php.ini /usr/local/php/lib/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

FROM centos:7
#--from=first:指定一级镜像
COPY --from=first /usr/local/php /usr/local/php
RUN useradd -M -s /sbin/nologin php && yum -y install gd libjpeg-devel libpng-devel freetype-devel libxml2-devel zlib-devel curl-devel openssl-devel
EXPOSE 9000
CMD ["/usr/local/php/sbin/php-fpm","-F"]

Dockerfile 创建镜像,构建LNMP+wordpress架构,架构,linux,服务器

3.3调整PHP配置文件

cd /opt/php
准备php有三个配置文件: 
php.ini			主配置文件  
php-fpm.conf	进程服务配置文件 
www.conf		扩展配置文件

#调整主配置文件:	
vim php.ini
--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939行--取消注释,修改
date.timezone = Asia/Shanghai

#调整进程服务配置文件:
vim php-fpm.conf
--17行--去掉";"注释
pid = run/php-fpm.pid

#调整扩展配置文件:
vim www.conf
--23,24行--修改用户和组
user = php
group = php
--36行--取消注释,修改
listen = 172.18.0.30:9000
--62行--取消注释,修改
listen.allowed_clients = 172.18.0.10

3.4构建php镜像

docker build -t mysql:centos7 .

docker images

二、基于镜像创建容器

1.自定义网络 

#创建自定义网络
docker network create --subnet=172.18.0.0/16  --opt "com.docker.network.bridge.name"="docker1"  mylnmp

#查看自定义网络
docker network ls

2.创建容器

#创建nginx容器
docker run -d --name nginx --network=mylnmp --ip=172.18.0.10 -p 80:80 -v /opt/nginx/www:/usr/local/nginx/html nginx:centos7

#创建mysql容器
docker run -d --name mysql --network=mylnmp --privileged --ip 172.18.0.20 -p 3306:3306 -v /usr/local/mysql mysql:centos7

#创建php容器
docker run -d --name php -p 9000:9000 --network=mylnmp --ip 172.18.0.30 --volumes-from nginx --volumes-from mysql php:centos7

3.创建wordpress数据库

#进入mysql容器
docker exec -it mysql bash

mysqladmin -u root password "123456"
mysql -u root -p123456
CREATE DATABASE wordpress;
GRANT all ON wordpress.* TO 'admin'@'%' IDENTIFIED BY '123456';
GRANT all ON wordpress.* TO 'admin'@'localhost' IDENTIFIED BY '123456';
flush privileges;

4.验证

cd /opt/nginx/www
#验证php
vim index.php
<?php
phpinfo();
?>

#验证mysql
vim index.php      		#替换原来的测试页内容
<?php
$link=mysqli_connect('192.168.88.10','admin','123456');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

三、部署 wordpress

cd /opt
上传 wordpress-4.9.4-zh_CN.tar.gz

tar xf wordpress-4.9.4-zh_CN.tar.gz -C /opt/nginx/www

网页访问 http://192.168.88.10/wordpress/index.php

Dockerfile 创建镜像,构建LNMP+wordpress架构,架构,linux,服务器文章来源地址https://www.toymoban.com/news/detail-618036.html

到了这里,关于Dockerfile 创建镜像,构建LNMP+wordpress架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生】Docker镜像的创建 Dockerfile 多阶段构建原理和使用场景

    创建镜像有三种方法,分别为【基于已有镜像创建】、【基于本地模板创建】以及【基于Dockerfile创建】。 (1)首先启动一个镜像,在容器里做修改  docker run -it --name web centos:7 /bin/bash     #启动容器  ​  yum install -y epel-release  #安装epel源  yum install -y nginx         #安装ng

    2024年02月12日
    浏览(40)
  • 使用Dockerfile构建自定义jdk镜像,在使用jdk镜像创建一个容器来外部访问(一步一步来哦~好简单的呢)

    文章主人公:帅哥BUG😎  文章路人: 路人 🤨  路人 😛 🤨:什么是dockerfile? 😎:Dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,另外,使 用Dockerfile去构建镜像好比使用pom去构建maven项目一样,有异曲同工之妙 😛:知道了知道了,

    2024年02月09日
    浏览(43)
  • 【Docker】基于Dockerfile搭建LNMP架构

      公司在实际的生产环境中,需要使用Docker 技术在一台主机上创建LNMP服务并运行Wordpress网站平台。然后对此服务进行相关的性能调优和管理工作。 主机 操作系统 IP地址 主要软件 Docker CentOS 7.3 x86_64 192.168.145.15 Docker 19.03 容器ip地址规划 (1)使用Docker构建LNMP环境并运行Wo

    2024年02月15日
    浏览(31)
  • 如何在 Linux 命令行下玩转 Docker——如何使用 Dockerfile 来构建和运行容器镜像

    作者:禅与计算机程序设计艺术 Docker 是一款开源的容器化技术,它利用 Linux 内核的容器特性,将应用部署到独立的进程环境中。基于容器技术可以极大地提高开发者和运维人员的效率,降低部署、测试和生产环节中的成本,有效地实现云计算资源的弹性伸缩。 本文主要介绍

    2024年02月07日
    浏览(41)
  • 【云原生】Dockerfile制作WordPress镜像,实现compose编排部署

    大家好,我是秋意零。 😈 CSDN作者主页 😎 博客主页 👿 简介 👻 普通本科生在读 在校期间参与众多计算机相关比赛,如:🌟 “省赛”、“国赛” ,斩获多项奖项荣誉证书 🔥 各个平台, 秋意临 账号创作者 🔥 云社区 创建者 点赞、收藏+关注下次不迷路! 欢迎加入 云社

    2023年04月11日
    浏览(82)
  • 使用Docker Dockerfile构建php LNMP集成开发环境,并运行Thinkphp5

    系统:MAC、Windows10 Docker版本:Docker version 23.0.5 Docker Desktop:Dockerdesktop官方地址 这篇主要介绍如何在Mac、Windows10使用docker搭建LNMP集成开发环境。下面我会写Dockerfile编译安装Nginx+php基础环境。mysql、redis基于官方Docker hub,分别构建我们自己的镜像。  code目录存放工程代码,会映

    2024年02月15日
    浏览(43)
  • 【云原生】Dockerfile制作WordPress镜像,实现Compose + K8s编排部署

    大家好,我是秋意零。 😈 CSDN作者主页 😎 博客主页 👿 简介 👻 普通本科生在读 在校期间参与众多计算机相关比赛,如:🌟 “省赛”、“国赛” ,斩获多项奖项荣誉证书 🔥 各个平台, 秋意临 账号创作者 🔥 云社区 创建者 点赞、收藏+关注下次不迷路! 欢迎加入 云社

    2024年02月03日
    浏览(38)
  • 【Docker-compose】基于Docker-compose创建LNMP环境并运行Wordpress网站平台

    参见使用Docker构建LNMP环境并运行Wordpress网站平台 Docker-Compose将所管理的容器分为三层,分别是 项目(project)、服务(service)以及容器(container) 。 Docker-Compose运行目录下的所有文件组成一个项目, 若无特殊指定项目名即为当前目录名 。 一个工程当中可包含多个服务,每个

    2024年02月15日
    浏览(38)
  • Dockerfile镜像构建

    配置daemon.json文件 提高资源利用率,节约部署IT成本. 提高部署效率,基于kubernetes实现快速部署交付,秒级启动. 实现横向扩容,灰度部署,回滚等. 可根据业务负载进行弹性扩展. 容器将环境和代码打包在镜像内,保证了测试与生产环境一致性. docker pull 拉取基础镜像(centos,ubuntu,alpin

    2024年01月21日
    浏览(38)
  • Dockerfile构建镜像

    dockerfile是 自定义镜像 的一套规则 dockerfile由多条指令构成,Dockerfile中的每一条指令都会对应于Docker镜像中的每一层 dockerfile的原理就是镜像分层。 Dockerfile 中的 每个指令都会创建一个新的镜像层 (是一个临时的容器,执行完后将不再存在,再往后进行重新的创建与操作)

    2024年02月17日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包