dockerfile 搭建lnmp+wordpress,docker-compose搭建lnmp+wordpress

news2024/11/19 6:40:44

目录

dockerfile 搭建lnmp+wordpress

部署nginx(容器IP 为 172.18.0.10)

部署mysql(容器IP 为 172.18.0.20)

部署php(容器IP 为 172.18.0.30)

 docker-compose搭建lnmp+wordpress


dockerfile 搭建lnmp+wordpress

systemctl stop firewalld 
systemctl disable firewalld
setenforce 0

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

部署nginx(容器IP 为 172.18.0.10)

mkdir /opt/nginx
cd /opt/nginx/

上传 nginx-1.12.0.tar.gz、wordpress-4.9.4-zh_CN.tar.gz 到 /opt/nginx/ 目录中

mkdir /opt/nginx/html
tar zxvf wordpress-4.9.4-zh_CN.tar.gz -C /opt/nginx/html

vim Dockerfile

FROM centos:7
MAINTAINER this is nginx image <wl>
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
ADD nginx.conf /usr/local/nginx/conf/
#ADD wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html/
RUN chmod 777 -R /usr/local/nginx/html/
EXPOSE 80
EXPOSE 443
ENTRYPOINT [ "/usr/local/nginx/sbin/nginx", "-g", "daemon off;" ]
docker build -t nginx:lnmp .

docker run -d --name nginx -p 80:80 -v /opt/nginx/html:/usr/local/nginx/html --net mynetwork --ip 172.18.0.10 nginx:lnmp


部署mysql(容器IP 为 172.18.0.20)

mkdir /opt/mysqld
cd /opt/mysqld

上传 mysql-boost-5.7.20.tar.gz 到 /opt/mysqld 目录中

vim Dockerfile

FROM centos:7
MAINTAINER this is mysql image <wl>
RUN yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make
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_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 && make install
ADD my.cnf /etc/
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
RUN useradd -M -s /sbin/nologin  mysql
RUN chown mysql:mysql /etc/my.cnf
RUN chown -R mysql:mysql /usr/local/mysql/
RUN /usr/local/mysql/bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
EXPOSE 3306
CMD ["/usr/local/mysql/bin/mysqld"]
vim my.cnf
[client]
port = 3306
socket = /usr/local/mysql/mysql.sock

[mysql]
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
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
docker build -t mysql:lnmp .

docker run --name=mysql -d --privileged -v /usr/local/mysql --net mynetwork --ip 172.18.0.20 mysql:lnmp

部署php(容器IP 为 172.18.0.30)

mkdir /opt/php
cd /opt/php

上传 php-7.1.10.tar.bz2 到 /opt/php 目录中

vim Dockerfile

FROM centos:7
MAINTAINER this is php image <wl>
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 
RUN 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 && make install
ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
ADD php.ini    /usr/local/php/lib/
ADD php-fpm.conf /usr/local/php/etc/
ADD www.conf /usr/local/php/etc/php-fpm.d/
EXPOSE 9000
ENTRYPOINT [ "/usr/local/php/sbin/php-fpm", "-F" ]
docker build -t php:lnmp .
docker run --name=php -d -p 9000:9000 --volumes-from mysql --volumes-from nginx --net mynetwork --ip 172.18.0.30 php:lnmp


docker exec -it mysql /bin/bash

mysql
create database wordpress;
grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
flush privileges;

浏览器访问:
http://192.168.233.60/wordpress/index.php

 docker-compose搭建lnmp+wordpress

  1. Docker Compose 环境安装
Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose
#下载
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
或者直接将compose的包放入 /usr/local/bin/下
#安装
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version

 准备依赖文件:

mkdir /opt/compose_lnmp/
cd /compose_lnmp
nginx mysql php

 在相应的目录内编写Dockerfile文件
写完相对应的Dockerfile文件后编写docker-compose.yml文件

#定义docker-compose版本,可以是2 或 3
version: '3'

#使用services定义服务
services:
  #第一个service
  nginx:
    #设置容器名
    container_name: nginx
    #使用dockerfile来构建镜像
    build:
      #指定Dockerfile文件所在位置
      context: ./nginx
      #指定文件名
      dockerfile: Dockerfile
    #映射端口
    ports:
    - 80:80
    - 443:443
    #设置数据卷挂载
    volumes:
    - ./nginx/html:/usr/local/nginx/html
    #加入网络
    networks:
      lnmp:
        ipv4_address: 172.18.0.10

  mysql:
    container_name: mysql
    build:
      context: ./mysql
      dockerfile: Dockerfile
    ports:
    - 3306:3306
    networks:
      lnmp:
        ipv4_address: 172.18.0.20
    volumes: 
    - db-data:/usr/local/mysql
    privileged: true

  php:
    container_name: php
    build:
      context: ./php
      dockerfile: Dockerfile
    ports:
    - 9000:9000
    networks:
      lnmp:
        ipv4_address: 172.18.0.30
    volumes: 
    - db-data:/usr/local/mysql
    - ./nginx/html:/usr/local/nginx/html
    depends_on:
    - nginx
    - mysql

#设置网络为自定义网络
networks:
  lnmp:
    driver: bridge
    ipam:
      config:
      - subnet: 172.18.0.0/16    

volumes:
  db-data:

最后在后台启动 Docker Compose 项目:

docker-compose -f docker-compose.yml up -d

 随后进入mysql 容器:

docker exec -it mysql /bin/bash
​
mysql
create database wordpress;
grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by 'abc123';
flush privileges;

​

 浏览器访问:

http://192.168.233.60/wordpress/index.php

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

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

相关文章

LeetCode 2562. 找出数组的串联值【数组,相向双指针】1259

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

电子笔记真的好用吗?手机上适合记录学习笔记的工具

提及笔记&#xff0c;不少人都会和学习挂钩&#xff0c;的确学习过程中我们经常会遇到很多难题&#xff0c;而经常记录笔记可以有效地帮助大家记住很多知识&#xff0c;而且时常拿出笔记查看一下&#xff0c;可方便巩固过去学习的知识。 手机作为大家日常随身携带的工具&#…

golang 拉取 bitbucket.org 私有库

以 bitbucket.org 平台和mac电脑为例 前置条件私库需要给你账号权限&#xff0c;可拉取的权限&#xff0c;否则无法进行正常拉取 我们采用ssh方式&#xff0c;需要在本地生成对应的 rsa 的公钥和私钥&#xff0c;将公钥配置如下图&#xff1a; 在 .ssh/config 写入你的配置 H…

工业环网交换机运行原理

在智能制造领域&#xff0c;工业环网交换机是一种必不可少的网络设备。该技术通过将各种工业设备、传感器和机器人连接到同一网络中&#xff0c;实现了高效的数据传输和快速的信息交流。在本文中&#xff0c;我们将讨论工业环网交换机的运行原理&#xff0c;以帮助您更好地了解…

文心一言 VS 讯飞星火 VS chatgpt (112)-- 算法导论10.2 3题

三、用go语言&#xff0c;用一个单链表L实现一个队列。要求操作 ENQUEUE 和 DEQUEUE 的运行时间仍为O(1)。 文心一言&#xff1a; 在 Go 语言中&#xff0c;使用单链表实现队列的操作&#xff0c;包括入队&#xff08;ENQUEUE&#xff09;和出队&#xff08;DEQUEUE&#xff…

练习之C++[2]

文章目录 1.栈和堆2.new和delete3.内存区域 1.栈和堆 对于栈来讲&#xff0c;生长方向是向下的&#xff0c;也就是向着内存地址减小的方向&#xff1b;对于堆来讲&#xff0c;它的生长方向是向上的&#xff0c;是向着内存地址增加的方向增长.栈区先定义的变量放到栈底&#xf…

官宣!联诚发与康冠科技达成战略合作,全面布局文旅演艺领域!

2023年10月11日&#xff0c;康冠科技&#xff08;股票代码&#xff1a;001308&#xff09;与联诚发LCF签约仪式在联诚发LCF深圳总部顺利举行&#xff0c;双方正式建立战略合作伙伴关系&#xff0c;并将基于自身优势&#xff0c;围绕文旅演艺、XR虚拟拍摄、5G8K、舞台租赁等领域…

基于Springboot实现校园疫情登记防控系统项目【项目源码+论文说明】

基于Springboot实现校园疫情登记平台系统演示 摘要 2019年12月19号中国武汉发生第一例新冠病毒的到来&#xff0c;大家都在听从政府的号召在居家隔离&#xff0c;不管是在城市还是在乡镇、农村&#xff0c;这引起我的注目&#xff0c;设计一套校园疫情防控系统&#xff0c;疫情…

LiveGBS流媒体平台GB/T28181功能-国标流媒体服务同时兼容内网收流外网收流多网段设备收流

LiveGBS流媒体平台GB/T28181功能-国标流媒体服务同时兼容内网收流外网收流多网段设备收流 1、背景2、设备接入播放2.1、查看通道2.2、直播播放 3、默认收流地址配置4、其它网络设备收流配置5、搭建GB28181视频直播平台 1、背景 服务器部署的时候&#xff0c;可能有多个网卡多个…

小程序使用uni.createAnimation只执行一次的问题

思路&#xff1a; 在页面创建的时候&#xff0c;创建一个临时动画对象调用 step() 来表示一组动画完成通过动画实例的export方法导出动画数据传递给组件的animation属性还原动画页面卸载的时候&#xff0c;清除动画数据 <template><view class"content"&g…

JavaScript-前端环境搭建-nodejs-打包分发-Webstorm-vue安装创建

文章目录 1.Node环境安装2.Node环境配置3.新建项目4.安装常用包4.1.vue安装4.2.安装webpack 5.总结 Web大前端技术&#xff0c;是一项使用范围非常广泛的技术&#xff0c;以JavaScript脚本语言为主使用&#xff0c;由于其本身开源的特点&#xff0c;可以使用的轮子非常的多&…

“数字支付龙头”汇付天下:以CRM为起点建设业务全流程数字化

数字化时代商业瞬息万变&#xff0c;技术日新月异&#xff0c;如何能快速打通场景支付和数据&#xff0c;构筑私域流量&#xff0c;强化营销能力&#xff0c;降低运营成本&#xff0c;实现全链路数字化增长&#xff0c;CRM系统的应用是不可或缺的关键环节。 成立于2006年6月&a…

proteus仿真大赛-----pyqt5制作上位机安防页面

本项目是基于pyqt5进行上位机的开发&#xff0c;主要是向下位机发送控制指令以及向服务器发送信息 主页面如图所示&#xff1a; 1.主页面是继承QMainWindow&#xff0c;使用QPushButton设置四个按钮&#xff0c;分别使用信号与槽机制连接不同的方法&#xff0c;然后使用setStyl…

安装Mycat-web

Mycat-web是一个用于管理Mycat数据库中间件的Web控制台。Mycat是一个开源的、高性能的分布式数据库中间件&#xff0c;可用于将多个MySQL数据库组织成一个逻辑上的集群&#xff0c;并提供负载均衡、故障切换、分片等功能。 下载 wget http://dl.mycat.org.cn/mycat-web-1.0/M…

西门子精智触摸屏下载程序后与PLC通信失败,提示输入传输密码的解决方法

西门子精智触摸屏下载程序后与PLC通信失败,提示输入传输密码的解决方法 如下图所示,这里使用的是TP900 Comfort精智系列触摸屏,下载程序之后,弹出窗口要求输入传输密码,但是我却不知道这里的传输密码指的是什么????怎么输都不对!! 浪费了大半天的时间,终于查出了原…

联合火力分配方案数学建模

2023年数学建模竞赛 联合火力分配方案数学建模 不仅在人们的生产实践中&#xff0c;在多目标规划中经常会遇到如何利用现有资源来安排&#xff0c;以取得最大经济效益的问题。此类问题构成了运筹学的一个重要分支—数学规划&#xff0c;而线性规划则是数学规划的一个重要分支。…

浅析森林烟火AI检测算法的应用及场景使用说明

一、方案背景 现有的森林防火监测系统落后&#xff0c;以人工地面巡护、瞭望塔高点巡查为主&#xff0c;存在巡护范围有限、巡护效率低等问题&#xff0c;建立健全的森林防火风险预警体系&#xff0c;实现对森林、林场等场景的全天候智能自动监测、火情预警&#xff0c;及时发…

【算法|双指针系列No.7】leetcodeLCR 007. 三数之和

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

轻松掌握Python正则表达式:高效处理文本数据的秘诀!

更多资料获取 &#x1f4da; 个人网站&#xff1a;涛哥聊Python 当谈到文本处理和搜索时&#xff0c;正则表达式是Python中一个强大且不可或缺的工具。 正则表达式是一种用于搜索、匹配和处理文本的模式描述语言&#xff0c;可以在大量文本数据中快速而灵活地查找、识别和提取…

【ROS】ros-noetic和anaconda联合使用【实操】

【ROS】ros-noetic和anaconda联合使用【实操】 文章目录 【ROS】ros-noetic和anaconda联合使用【实操】1. requirement2. 新建ros包中的python脚本3. SAC算法Reference 在介绍完基本的联合使用方式后&#xff08;参考 这篇博客&#xff09;&#xff0c;笔者希望使用ros能完成 …