【docker】dockerfile部署lnmp、docker compose初步

news2024/9/20 22:35:50

1、dockerfile部署lnmp

mkdir /opt/lnmp
cd /opt/lnmp
mkdir nginx mysql php
docker network create --subnet=20.0.0.0/24 lnmp-net

将wordpress文件夹拷贝到nginx、php文件夹
/opt/nginx/Dockerfile:

# 使用官方的nginx镜像作为基础镜像
FROM nginx:latest

# 复制默认配置文件
COPY ./nginx.conf /etc/nginx/nginx.conf

# 复制静态文件到容器中
COPY ./wordpress /var/www/html
# 指定容器启动时执行的命令
CMD ["nginx", "-g", "daemon off;"]
# 暴露容器的端口
EXPOSE 80

/opt/lnmp/nginx/nginx.conf:

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /var/www/html;
            index  index.php index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        location ~ \.php$ {
            root           /var/www/html;
            fastcgi_pass php:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }
}

/opt/lnmp/mysql/Dockerfile:

# 使用官方的mysql/mysql-server镜像
FROM mysql:5.7

# 设置MYSQL_ROOT_PASSWORD
ENV MYSQL_ROOT_PASSWORD=Admin!123

# 复制数据初始化脚本
COPY ./init.sql /docker-entrypoint-initdb.d/
EXPOSE 3306

/opt/lnmp/mysql/init.sql

-- 创建数据库
create database wordpress;
grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
grant all privileges on *.* to 'root'@'%' identified by 'Admin!123';
flush privileges;

/opt/lnmp/php/Dockerfile

# 使用官方的php:fpm镜像
FROM php:7.4-fpm

# 安装必要的扩展
RUN docker-php-ext-install mysqli pdo_mysql

# 设置时区
RUN echo 'Asia/Shanghai' > /etc/timezone && \
    dpkg-reconfigure --frontend noninteractive tzdata


COPY ./wordpress /var/www/html

# 设置工作目录
WORKDIR /var/www/html
# 暴露端口9000
EXPOSE 9000
cd /opt/lnmp
docker build -t my-php -f ./php/Dockerfile ./php   
docker build -t my-mysql -f ./mysql/Dockerfile ./mysql     
docker build -t my-nginx -f ./nginx/Dockerfile ./nginx
docker run -d --name mysql --network lnmp-net --ip 20.0.0.3 my-mysql
docker run -d --name php --network lnmp-net --ip 20.0.0.4 -p 9000:9000 my-php
docker run -d --name nginx --network lnmp-net --ip 20.0.0.2 -p 80:80 my-nginx

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、docker-compose构建nginx镜像和容器

mkdir -p /opt/compose_nginx/wwwroot/
echo "<h1>this is test web</h1>" > /opt/compose_nginx/wwwroot/index.html

docker-compose.yml

version: '3'
services:
  nginx:
    container_name: web1
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1216:80
      - 1217:443
    networks:
      lnmp:
        ipv4_address: 172.20.0.10
    volumes:
        - ./wwwroot:/usr/local/nginx/html
networks:
  lnmp:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.0.0/16

/opt/compose_nginx/nginx/Dockerfile

FROM centos

RUN sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g" /etc/yum.repos.d/CentOS-*

RUN yum clean all && yum makecache 
RUN yum install -y nginx

CMD ["nginx", "-g", "daemon off;"]
# 暴露容器的端口
EXPOSE 80
cd /opt/compose_nginx/
docker-compose -f docker-compose.yml up -d

在这里插入图片描述

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

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

相关文章

【QGroundControl二次开发】十. QT添加GStreamer视频播放同时保存

上一章介绍使用QT播放GStreamer视频流 【QGroundControl二次开发】八. QT实现播放gstreamer视频。 这章介绍如何在原有基础上保存为视频&#xff0c;同时保存为一个个规定大小的小视频。 一. 思想 之前的文章展示了如何在QT中播放GST视频流&#xff0c;这章在原有的基础上增加…

vue-cli(二)

箭头函数 一般的函数&#xff1a; 这里window是用来调用函数的 function fun(){console.log(this) } window.fun(); 箭头函数&#xff1a; 1、如果只有一个参数&#xff0c;形参的小括号可以省略 2、如果只有一条语句&#xff0c;{}可以省略 完整的写法 let fun2 a>…

前缀和优化DP

LeetCode3251 单调数组对数目 本题的子问题是下标 0 到 i 中的单调数组对的个数&#xff0c;且 arr1​[i]j&#xff0c;将其记作 f[i][j]。 class Solution { public:int countOfPairs(vector<int>& nums) {const int mod1e97;int nnums.size();int mnums[0];for(in…

C++(STL)的List解读

目录 list简介 list的几个特性 接口函数 1.默认成员函数 2.迭代器相关函数 3.容量相关的函数 4.成员访问相关的函数 5.modify系列 6.operation系列 7.重载在全局的函数 list简介 Lists are sequence containers that allow constant time insert and erase operation…

【Linux】阻塞信号|信号原理|深入理解捕获信号|内核态|用户态|sigaction|可重入函数|volatile|SIGCHILD|万字详解

目录 ​编辑 一&#xff0c;常见的信号术语 二&#xff0c;信号在内核中的表示 信号标志位 Pending表 Block表 handler表 POSIX.1标准 三&#xff0c;sigset_t 信号集操作函数 sigemptyset sigfillset sigaddset sigdelset sigismember sigprocmask sig…

ISP 代理与住宅代理 – 终极指南

模拟自然的、类似人类的流量可能很麻烦&#xff0c;但对于某些任务&#xff08;如帐户管理或网络自动化&#xff09;&#xff0c;没有它就无法完成。ISP 和住宅代理都可以提供帮助&#xff0c;但您不能盲目购买和部署它们。您需要了解它们的优势&#xff0c;理解它们的弱点&…

买的谷歌游戏账号被删了?如果是企业账号找回来的可能性很小。一个识别谷歌企业号的简单方法

这段时间有几个朋友找到我说&#xff0c;自己买的谷歌账号登录不了&#xff0c;有的是直接提示被删除&#xff0c;问能否恢复。 我了解了一下&#xff0c;发现他们的账号都是购买的企业账号。这种企业账号一旦被管理员删除了是无法恢复的。 特此记录下来&#xff0c;提醒各位…

8月13日笔记

msf补充 使用方法&#xff1a; 进入框架&#xff1a;msfconsole 使用search命令查找相关漏洞&#xff1a;search ms14-058 使用info查看模块信息&#xff1a;info 我们也可以将攻击代码写configure.rc&#xff08;只要是以 .rc 结尾的文件&#xff09;配置文件中&#xff0c;然…

【数学建模】介绍论文书写格式

&#x1f308;个人主页&#xff1a;Yui_ &#x1f308;Linux专栏&#xff1a;Linux &#x1f308;C语言笔记专栏&#xff1a;C语言笔记 &#x1f308;数据结构专栏&#xff1a;数据结构 文章目录 1.论文整体排版2. 标题书写3.摘要书写4.参考文献5.公式编辑5.1 常用公式编辑方法…

JavaScript 逆向技巧总结

本节属于知识总结&#xff0c;只是对思路的梳理&#xff0c;不对具体内容进行展开 JS 逆向可以分为三大部分&#xff1a; 寻找入口&#xff0c; 调试分析&#xff0c; 模拟执行 寻找入口&#xff1a; 这是非常关键的一步&#xff0c;逆向在大部分情况下就是找一些加密参数到底…

Linux磁盘管理与文件系统(二):实用工具和命令、fdisk分区示例

文章目录 4、查看或管理磁盘分区-fdisk格式选项示例 4、示例&#xff1a;使用 fdisk 命令创建分区需求操作步骤 5、创建文件系统-mkfs格式常用选项示例创建其他类型的文件系统 6、创建文件系统-mkswap格式常用选项示例拓展&#xff1a;关闭和启用交换分区拓展&#xff1a;swap分…

搬瓦工澳大利亚AS9929 VPS测评

搬瓦工澳大利亚vps怎么样&#xff1f;搬瓦工澳大利亚悉尼数据中心在运作CUII/AS9929线路的VPS&#xff0c;底层为KVM虚拟&#xff0c;纯SSD阵列&#xff0c;1Gbps带宽... 目前看到的是CPU主频是2.4GHz&#xff0c;接入XTOM网络&#xff0c;IP归属澳大利亚&#xff0c;当前大致I…

window好用的批量远程桌面连接工具

下载 安装 Remote Desktop Connection Manager 添加server

AlexNet模型搭建(三部曲_2)

文章目录 1模型介绍2 模型搭建3 模型训练4 模型预测 猫狗二分类&#xff0c;模型简单&#xff0c;训练精度并不高。数据集下载&#xff1a;<https://aistudio.baidu.com/datasetdetail/26884> 百度飞浆上找的大小只有60多M 1模型介绍 AlexNet是一个卷积神经网络的名字&a…

Linux命令(基础面试可用,都是自己觉得平时使用多的)

1.cat 参数&#xff1a;-n&#xff1a;显示行号-s&#xff1a;压缩连续的空行&#xff0c;只显示一个空行2.chattr 改变文件属性 语法&#xff1a;chattr [-RV] [/-/<属性>][文件或目录] 属性&#xff1a;a&#xff1a;让文件或目录仅供附加用途i&#xff1a;不得任意更…

MediaPipe人体姿态、手指关键点检测

MediaPipe人体姿态、手指关键点检测 文章目录 MediaPipe人体姿态、手指关键点检测前言一、手指关键点检测二、姿态检测三、3D物体案例检测案例 前言 Mediapipe是google的一个开源项目&#xff0c;用于构建机器学习管道。   提供了16个预训练模型的案例&#xff1a;人脸检测、…

基于级联深度学习算法的前列腺病灶检测在双参数MRI中的评估| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统

Title 题目 Evaluation of a Cascaded Deep Learning–based Algorithm for Prostate Lesion Detection at Biparametric MRI 基于级联深度学习算法的前列腺病灶检测在双参数MRI中的评估 Background 背景 Multiparametric MRI (mpMRI) improves prostate cancer (PCa) de…

从西安出发,走向世界——西安国际数字影像产业园跻身全国十大产业园区行列

西安&#xff0c;作为中国历史文化名城&#xff0c;不仅以其丰富的历史遗产闻名于世&#xff0c;还逐渐成为现代科技和产业发展的新高地。产业园区成为推动经济增长和创新发展的重要引擎&#xff0c;西安国际数字影像产业园&#xff0c;正怀揣着雄心壮志&#xff0c;向着全国十…

idea git拉取代码can‘t update

idea有时候创建的新分支&#xff0c;提交以后却无法拉去代码&#xff0c;提示如下错误信息&#xff1a; cant update No tracked branch configured for branch 在idea的“Terminal”窗口中输入如下命令即可 git branch --set-upstream-to origin 找不到Terminal的可以参考下图…

ESP32S3 IDF 对 16路输入输出芯片MCP23017做了个简单的测试

这次还是使用了idf老版本4.4.7&#xff0c;上次用了5.3&#xff0c;感觉不好用&#xff0c;官方的MCP23017芯片是英文版&#xff0c;真的很难读明白&#xff0c;可能是我英语水平不够吧。先看看每个寄存器的功能&#xff1a; IODIRA 和 IODIRB: 输入/输出方向寄存器 IPOLA 和 I…