Dockerfile创建镜像INMP+wordpress

Dockerfile创建镜像INMP+wordpress

需要哪些呢:

Nginx 172.111.0.10  docker-nginx

Mysql 172.111.0.20  docker-mysql

PHP  172.111.0.30   docker-PHP

开始实验:

创建各级目录,他们各自的包和配置文件必须要在同一目录下才可以生效,否则报错

基于Nginx的dockerfile

vim Dockerfile

FROM centos:7

MAINTAINER this is my  diy nginx <wang>

RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make && useradd -M -s /sbin/nologin nginx

ADD nginx-1.22.0.tar.gz /usr/local/src/

WORKDIR /usr/local/src/nginx-1.22.0

RUN ./configure \

--prefix=/usr/local/nginx \

--user=nginx \

--group=nginx \

--with-http_stub_status_module && make -j 4 && make install

ENV PATH /usr/local/nginx/sbin:$PATH

COPY nginx.conf /usr/local/nginx/conf

ADD wordpress-6.4.2-zh_CN.tar.gz /usr/local/nginx/html

RUN chmod 777 -R /usr/local/nginx/html

EXPOSE 80

VOLUME ["usr/local/nginx/html/"]

CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

  server {

     listen  80;

     server_name localhost;

     charset utf-8;

     location / {

        root html;

        index index.html index.php;

     }

     error_page 500 502 503 504 /50x.html;

     location = /50x.html {

        root   html;

     }

     location ~ \.php$ {

      root        html;

      fastcgi_pass   172.111.0.30:9000;

      fastcgi_index  index.php;

      fastcgi_param  SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

      include        fastcgi_params;

     }

}

}

创建自定义网络

docker network create --subnet=172.111.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork

随后,容器下载

docker build -t nginx:lnmp .

端口映射

docker run -itd --name nginx -p 80:80 -v /opt/nginx:/opt/nginxlogs --net mynetwork --ip 172.111.0.10 nginx:lnmp

MySQL的dockerfile

FROM centos:7

RUN yum -y install ncurses ncurses-devel bison cmake pcre-devel zlib-devel gcc gcc-c++ make &&\useradd -M -s /sbin/nologin mysql

ADD mysql-boost-5.7.20.tar.gz /usr/local/src/

WORKDIR /usr/local/src/mysql-5.7.20/

RUN 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 -j 4 && make install

COPY my.cnf /etc/my.cnf

EXPOSE 3306

RUN chown -R mysql:mysql /usr/local/mysql/ && chown mysql:mysql /etc/my.cnf

WORKDIR /usr/local/mysql/bin/

RUN ./mysqld \

--initialize-insecure \

--user=mysql \

--basedir=/usr/local/mysql \

--datadir=/usr/local/mysql/data && cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ && systemctl enable mysqld

ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH

VOLUME ["/usr/local/mysql"]

ENTRYPOINT ["/usr/sbin/init"]

接下来

vim my.cnf

[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

general_log=ON

general_log_file=/usr/local/mysql/date/mysql_general.log

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

创键容器,记得给权限

docker run -itd --name mysql -p 3306:3306 --privileged -v /opt/mysql:/opt/mysql --net mynetwork --ip 172.111.0.20 mysql:lnmp

进入容器

docker exec -it mysql bash

进入数据库

mysql -u root -p

create database wordpress;

grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';  

grant all privileges on *.* to 'root'@'%' identified by '123456';  

flush privileges;

最后

Docker build -t mysql:lnmp .

PHP的Dockerfile

vim Dockerfile

FROM centos:7

RUN yum -y install gd \

libjpeg libjpeg-devel \

libpng libpng-devel \

freetype freetype-devel \

libxml2 libxml2-devel \

zlib zlib-devel \

curl curl-devel \

openssl openssl-devel \

gcc gcc-c++ make pcre-devel && useradd -M -s /sbin/nologin nginx

ADD php-7.1.10.tar.bz2 /usr/local/src

WORKDIR /usr/local/src/php-7.1.10

RUN ./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 -j 4 && make install

ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH

COPY php.ini /usr/local/php/lib

COPY php-fpm.conf /usr/local/php/etc/

COPY www.conf /usr/local/php/etc/php-fpm.d/

EXPOSE 9000

ENTRYPOINT ["/usr/local/php/sbin/php-fpm","-F"]

php-fpm.conf

php.ini  

www.conf

最后

docker bulid -t php:lnmp .

端口映射

docker run -itd --name php -p 9000:9000 --volumes-from nginx --volumes-from mysql --net mynetwork --ip 172.111.0.30 php:lnmp

docker exex -it php bash

浏览器访问

20.0.0.58/wordpress/index.php

如何在外面赋权(外面赋权)

重新构建镜像

如果不能同步,删除容器重新创建

继续我们的操作:

最终

进入

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/217052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Fiddler中AutoResponder的简单使用

AutoResponder&#xff0c;自动回复器&#xff0c;用于将 HTTP 请求重定向为指定的返回类型。 这个功能有点像是一个代理转发器&#xff0c;可以将某一请求的响应结果替换成指定的资源&#xff0c;可以是某个页面也可以是某个本地文件 1.使用 打开“Fiddler”&#xff0c;点击…

掌握iText:轻松处理PDF文档-高级篇-加密和解密

前言 iText作为一个功能强大、灵活且广泛应用的PDF处理工具&#xff0c;在实际项目中发挥着重要作用。通过这些文章&#xff0c;读者可以深入了解如何利用iText进行PDF的创建、编辑、加密和提取文本等操作&#xff0c;为日常开发工作提供了宝贵的参考和指导。 掌握iText&#…

【Vue】router.push用法实现路由跳转

目录 router.push用法 在Login.vue中 在Register.vue中 ​ 上一篇&#xff1a;登录与注册界面的制作 https://blog.csdn.net/m0_67930426/article/details/134895214?spm1001.2014.3001.5502 制作了登录与注册界面&#xff0c;并介绍了相关表单元素即属性的用法 在登录页面…

Docker笔记:关于Dockerfile及构建镜像

Dockerfile 的作用 Dockerfile让docker命令变得更简单&#xff0c;是用于构建docker镜像&#xff0c;实现自动化部署 Dockerfile 构建自己的centos镜像 这里有一个应用场景&#xff0c;创建一个自己的centos镜像&#xff0c;这个镜像有我们所需的软件 可以将我们一系列的操作…

人大金仓V8R6进阶授权操作

授权用户myuser在模式myschema 单表的所有权限 GRANT ALL ON TABLE "myschema"."mytable" to "myuser"; 授权用户myuser在模式myschema 单表的查询权限 GRANT SELECT ON TABLE "myschema"."mytable" to "myuser";…

jQuery遍历与删除添加节点

个人名片&#xff1a; &#x1f60a;作者简介&#xff1a;一名大二在校生 &#x1f921; 个人主页&#xff1a;坠入暮云间x &#x1f43c;座右铭&#xff1a;懒惰受到的惩罚不仅仅是自己的失败&#xff0c;还有别人的成功。 &#x1f385;**学习目标: 坚持每一次的学习打卡 文章…

手拉手探索JSONCrack数据可视化

JSON Crack数据可视化工具 官网&#xff1a;https://jsoncrack.com/ 项目地址&#xff1a;https://github.com/AykutSarac/jsoncrack.com SON Crack 是一个很方便的 JSON 数据可视化工具。 该项目不是简单的展示 JSON 数据,而是将其转化为类似思维导图的形式,支持放大/缩小、展…

技术资讯:VSCode大更新,这两个功能终于有了

大家好&#xff0c;我是大澈&#xff01; 本文约1200字&#xff0c;整篇阅读大约需要2分钟。 感谢关注微信公众号&#xff1a;“程序员大澈”&#xff0c;然后免费加入问答群&#xff0c;从此让解决问题的你不再孤单&#xff01; 1. 资讯速览 就在前阵子&#xff0c;前端人都…

gcc的编译过程

gcc编译过程包括预处理&#xff0c;编译&#xff0c;汇编&#xff0c;链接。 &#xff08;1&#xff09;预处理 预处理就是对文件中带#内容的处理&#xff0c;包括宏定义&#xff0c;条件编译和头文件。 可以通过gcc -E <file> -o xxx.i 来进行预处理 查看.i 文件可发现…

Java LeetCode篇-二叉树经典解法(实现:判断平衡二叉树、找两个节点最近的祖先等)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 平衡二叉树 1.1 实现判断平衡二叉树的思路 1.2 代码实现判断平衡二叉树 2.0 二叉树的层序遍历 2.1 实现二叉树层序遍历的思路 2.2 代码实现二叉树层序遍历 3.0 …

【ITK库学习】使用itk库进行图像滤波ImageFilter:模糊降噪

目录 1、itkDiscreteGaussianImageFilter 离散高斯2、itkBinomialBlurImageFilter 二项式模糊3、itkSmoothingRecursiveGaussianImageFilter 图像模糊可以削弱图像频谱的高频部门 1、itkDiscreteGaussianImageFilter 离散高斯 该类通过图像与离散高斯算子&#xff08;内核&…

苹果app应用ipa文件程序开发后如何运行到苹果iOS真机上测试?

在苹果应用程序开发过程中&#xff0c;将app安装于真机进行测试是一个不可或缺的步骤&#xff0c;它可以帮助你检测app在实际设备上的性能表现及存在的潜在问题。这篇文章将详细阐述如何将开发好的苹果app&#xff08;.ipa文件&#xff09;安装到真机上进行测试。 图片来源&…

文心一言 VS 讯飞星火 VS chatgpt (155)-- 算法导论12.3 2题

二、用go语言&#xff0c;假设通过反复向一棵树中插人互不相同的关键字来构造一棵二叉搜索树。证明&#xff1a;在这棵树中查找关键字所检查过的结点数目等于先前插入这个关键字所检查的结点数目加 1。 文心一言&#xff1a; 为了证明这个结论&#xff0c;我们可以使用二叉搜…

VisualSVN Server的安装全过程

目录 背景: 安装过程&#xff1a; 步骤1&#xff1a; 步骤2&#xff1a; 步骤3&#xff1a; 步骤4&#xff1a; 步骤5&#xff1a; 安装出现的bug&#xff1a; 问题: 解决办法: 总结: 背景: VisualSVN Server 是一款免费的 SVN (Subversion) 服务器软件&#xff0c…

2创建工程及点灯

1:软件安装&#xff1a; 1关注公众号“纸飞资”&#xff0c;键盘输入keil“”,按照文章要求安装编译软件 2芯片安装&#xff1a; 方式一&#xff1a;离线安装。去Keil公司官网的器件支持包下载页面选择对应的公司及器件型号&#xff0c;然后在Device Family Pack文本框中点击…

Python异常、模块和包

Python异常、模块和包 1.了解异常2.异常的捕获方法3.异常的传递4.Python模块5.Python包 1.了解异常 1.1什么是异常 当检测到一个错误是&#xff0c;Python解释器就无法继续执行了&#xff0c;发而出现了一些错误提示&#xff0c;这就是所谓的“异常”&#xff0c;也就是我们常…

二叉树的最大深度(力扣

int maxDepth(struct TreeNode* root) {if(!root) return 0;return fmax(maxDepth(root->left),maxDepth(root->right))1; }

【开源软件】最好的开源软件-2023-第26名 Accelerate

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…

PHP的最新版本是多少?有什么新特性?

截至日期&#xff08;2022年1月&#xff09;&#xff0c;PHP的最新稳定版本是PHP 8.0。以下是PHP 8.0的一些主要新特性&#xff1a; JIT 编译器&#xff1a; 引入了即时编译&#xff08;Just-In-Time&#xff0c;JIT&#xff09;引擎&#xff0c;提升了PHP脚本的执行性能。 命…

可以操作Access的ORM工具,MS Access日期的坑

可以操作Access的ORM工具&#xff0c;MS Access日期的坑 MS Access日期可以查询返回&#xff1b; 但作为参数&#xff0c;不能过滤成功&#xff0c;则试了三种日期类型都不可以; MS Access日期作为入参&#xff0c;在驱动官网找相关资料&#xff0c;找不到实例&#xff1b; …