当前位置: 首页 > news >正文

dockerfile搭建部署LNMP

目录

实验

架构:

实验步骤:

nginx部分

mysql部分

php部分


实验

实验:用dockerfile搭建LNMP论坛

架构:

一台docker虚拟机

docker部署nginx 1.22         指定ip地址172.111.0.10

docker部署mysql 8.0.30     指定ip地址172.111.0.20

docker部署php 8.1.27        指定ip地址172.111.0.30

docker只能单节点部署,就是只能在一台机器上部署,跨机器容器无法通信,需要k8s。

docker做高可用只能在节点上增加同一服务的容器数量 。

实验步骤:

1.在opt目录下 mkdir nginx mysql php

nginx镜像

cd nginx/

把nginx和wordpress两个安装包拖入进去

vim Dockerfile

FROM centos:7
MAINTAINER this is nginx <lnmp>
RUN rm -rf /etc/yum.repos.d/*
ADD http://mirrors.aliyun.com/repo/Centos-7.repo /etc/yum.repos.d/Centos-7.repo
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
ADD nginx-1.22.0.tar.gz /usr/local/src/
RUN useradd -M -s /sbin/nologin nginx
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;"]

还需要在nginx目录下新建一个nginx.conf的配置文件

vim nginx.conf

worker_processes  1;
events {worker_connections  1024;
}
http {
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';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 build -t nginx:lnmp .

创建自定义网络

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

创建容器

docker run -itd --name nginx -p 80:80 -m 1g -v /opt/nhtml:/opt/nginx --net mynetwork --ip 172.111.0.10 nginx:lnmp

docker exec -it nginx bash

在容器里面

yum -y install net-tools

netstat -antp | grep 80

看nginx的端口是否起来

cd /usr/local/nginx/html

看一下wordpress文件是否存在

访问虚拟机本机ip192.168.233.22

mysql镜像

cd mysql/

把mysql的安装包拖进来

写一个my.cnf的配置文件

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 = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

vim Dockerfile

FROM centos:7
MAINTAINER this is mysql <lnmp>
RUN rm -rf /etc/yum.repos.d/*
ADD http://mirrors.aliyun.com/repo/Centos-7.repo /etc/yum.repos.d/Centos-7.repo
RUN yum -y install libaio numactl-libs pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin mysql
ADD mysql-8.0.30-el7-x86_64.tar.gz /usr/local
RUN mv /usr/local/mysql-8.0.30-el7-x86_64 /usr/local/mysql
COPY my.cnf /etc/my.cnf
EXPOSE 3306
RUN chown -R mysql:mysql /usr/local/mysql/ && chown mysql:mysql /etc/my.cnf
ENV PATH=/usr/local/mysql/bin/:/usr/local/mysql/lib:$PATH
WORKDIR /usr/local/mysql/bin
RUN ./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
VOLUME ["/usr/local/mysql"]
ENTRYPOINT ["./mysqld"]

docker build -t nginx:lnmp .

创建容器

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

docker exec -it mysql bash

进入数据库

mysql -u root -p

create database wordpress;

CREATE USER 'root'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

CREATE USER 'wordpress'@'%' IDENTIFIED BY '123456';

GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%';

flush privileges;

php镜像

cd php/

把php的安装包拖入进来并且把三个配置文件也拖进来

vim Dockerfile

FROM centos:7
MAINTAINER this is php <lnmp>
RUN rm -rf /etc/yum.repos.d/*
ADD http://mirrors.aliyun.com/repo/Centos-7.repo /etc/yum.repos.d/Centos-7.repo
RUN yum -y install epel-release
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 \
oniguruma-devel \
sqlite-devel
ADD php-8.1.27.tar.gz /usr/local/src
WORKDIR /usr/local/src/php-8.1.27
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-pdo-mysql \
--with-openssl \
--with-sqlite-devel \
--with-oniguruma-devel \
--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
CMD ["/usr/local/php/sbin/php-fpm","-F"]

docker build -t php:lnmp .

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

docker exec -it php bash

cd /usr/local/

查看nginx和mysql文件是否在和php在local目录下

cd mysql/

查看mysql.sock文件是否存在

cd /usr/local/nginx/html

查看wordpress文件是否存在

yum -y install net-tools

netstat -antp | grep 9000

查看端口是否起来

访问虚拟机本机ip192.168.233.22/wordpress

http://www.lryc.cn/news/427992.html

相关文章:

  • Rust : 数据分析利器polars用法
  • Qt第一课
  • 论“graphics.h”库,easyx
  • 如何在寂静中用电脑找回失踪的手机?远程控制了解一下
  • Android 实现动态换行显示的 TextView 列表
  • Golang | Leetcode Golang题解之第352题将数据流变为多个不相交区间
  • Ubuntu安装mysql 以及远程连接mysql Windows—适合初学者的讲解(详细)
  • 【数学建模】MATLAB快速入门
  • 【ubuntu24.04】k8s 部署5:配置calico 镜像拉取
  • Elasticsearch 的数据备份与恢复
  • Ps:首选项 - 暂存盘
  • 力扣217题详解:存在重复元素的多种解法与复杂度分析
  • 享元模式:轻量级对象共享,高效利用内存
  • 人工智能-自然语言处理(NLP)
  • 基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(三)---创建自定义激光雷达Componet组件
  • C++ 设计模式——策略模式
  • 【书生大模型实战营(暑假场)闯关材料】基础岛:第3关 浦语提示词工程实践
  • C++ | Leetcode C++题解之第350题两个数组的交集II
  • 遗传算法原理与实战(python、matlab)
  • 《黑神话:悟空》媒体评分解禁 M站均分82
  • 安卓中携程和线程的区别。携程是指什么?
  • 部署flannel网络(master服务器执行)遇到错误
  • 超越IP-Adapter!阿里提出UniPortrait,可通过文本定制生成高保真的单人或多人图像。
  • 使用托管竞价实例在Amazon SageMaker上运行机器学习训练
  • AIoT智能物联网平台定义
  • 微服务设计原则——高性能:存储设计
  • hbase-manager图形化界面的安装与配置
  • STM32之继电器与震动传感器的使用,实现震动灯
  • RS232(旧协议)与RS485(新协议)
  • android13顶部状态栏里面调节背光,不隐藏状态栏面板