2-1、docker-compose启动php

#生成php镜像
 [root@rocky8 data]#vim /data/dockerfile/ubuntu_php/Dockerfile
 FROM ubuntu_base:v1.0
 LABEL maintainer="www.wang.org" version="ubuntu_php:v1.0"
 ​
 ADD php-7.4.30.tar.gz /usr/local/src/
 ​
 RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
 RUN apt update && \
    apt -y install gcc make libssl-dev libxml2-dev libsqlite3-dev libcurl3-dev libxml2 sqlite3 pkg-config zlib1g-dev libonig-dev libkrb5-dev libssl-dev libbz2-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libfreetype-dev g++ libonig-dev libxslt-dev libzip-dev && \
     cd /usr/local/src/php-7.4.30 && \
    ./configure --prefix=/apps/php74 --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-zlib --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-mbstring --enable-xml --enable-sockets --enable-fpm --enable-maintainer-zts --disable-fileinfo && \
     make && make install && \
    useradd -r -u 888 nginx
 ​
 COPY php.ini /apps/php74/etc/
 COPY www.conf /apps/php74/etc/php-fpm.d/
 COPY php-fpm.conf /apps/php74/etc/
 COPY run_php.sh /
 ​
 CMD ["/run_php.sh"]
 ​
 [root@rocky8 data]#vim /data/dockerfile/ubuntu_php/run_php.sh
 /apps/php74/sbin/php-fpm
 tail -f /etc/hosts
 ​
 #编写docker-compose.yml
 [root@rocky8 php]#vim docker-compose.yml
 version: '3.3'
 services:
  ubuntu_php:
    container_name: php
    image: "ubuntu_php:v1.1"
 ​

2-2、docker-compose启动nginx

 #生成nginx镜像
 [root@rocky8 ubuntu_nginx_base]#vim Dockerfile
 FROM ubuntu_base:v1.0
 LABEL maintainer="www.wang.org" version="ubuntu_nginx_base:v1.0"
 ​
 ADD nginx-1.22.0.tar.gz /usr/local/src/
 ​
 RUN apt update && \
    apt install -y nfs-kernel-server nfs-common gcc openssh-server lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev unzip zip make
 ​
 RUN cd /usr/local/src/nginx-1.22.0 && \
    ./configure --prefix=/apps/nginx && \
     make && make install && \
     ln -s /apps/nginx/sbin/nginx /usr/bin && \
     mkdir /apps/nginx/conf/conf.d && \
     rm -rf /usr/local/src/nginx-1.22.0/*
 ​
 ADD nginx.conf /apps/nginx/conf/nginx.conf
 ​
 RUN groupadd -g 888 -r nginx && \
    useradd -u 888 -g nginx -r -s /sbin/nologin nginx && \
     chown -R nginx.nginx /apps/nginx/
 ​
 EXPOSE 80 443
 ​
 CMD ["/apps/nginx/sbin/nginx","-g","daemon off;"]
 ​
 [root@rocky8 ubuntu_nginx_base]#docker build -t ubuntu_nginx_base:v1.0 .
 [root@rocky8 nginx]#vim docker-compose.yml
 version: '4.4'
 services:
  ubuntu_nginx_base:
    container_name: ubuntu_nginx
    image: "ubuntu_nginx_base:v1.0"
    volumes:
       - '/data/conf.d:/apps/nginx/conf/conf.d'
       - '/data/wordpress:/data/wordpress'
    ports:
       - "80:80"
     restart: always
 ​

2-3、docker-compose启动mysql

 #编写docker-compose.yml
 [root@rocky8 mysql]#vim docker-compose.yml
 ​
 version: '5.5'
 services:
  mysql:
    container_name: mysql
    image: mysql:8.0.30-oracle
    environment:
       - MYSQL_ROOT_PASSWORD=123456
       - MYSQL_DATABASE=wordpress
       - MYSQL_USER=wordpress
       - MYSQL_PASSWORD=123456
    ports:
       - "3306:3306"
    volumes:
       - '/data/mysql:/var/lib/mysql'
 ​

2-4、docker-compose启动多个容器

 #编写docker-compose.yml启动php+nginx+mysql:
 [root@rocky8 docker-compose]#vim docker-compose.yml
 version: '1.0'
 services:
  nginx:
    image: ubuntu_nginx_base:v1.0
    container_name: nginx
    volumes:
       - '/data/conf.d:/apps/nginx/conf/conf.d'
       - '/data/wordpress:/data/wordpress'
     restart: unless-stopped
    ports:
       - "80:80"
       - "443:443"
  db:
    image: mysql:8.0.30-oracle
    container_name: mysql
     restart: unless-stopped
    environment:
       - MYSQL_ROOT_PASSWORD=123456
       - MYSQL_DATABASE=wordpress
       - MYSQL_USER=wordpress
       - MYSQL_PASSWORD=123456
    volumes:
       - '/data/mysql:/var/lib/mysql'
    network_mode: 'container:nginx'
    depends_on:
       - nginx
 ​
  php:
    image: ubuntu_php:v1.1
    container_name: php
     restart: unless-stopped
    network_mode: 'container:nginx'
    volumes:
       - '/data/wordpress:/data/wordpress'
    depends_on:
       - nginx
 ​
 [root@rocky8 docker-compose]#docker ps -a
 CONTAINER ID   IMAGE                   COMMAND                 CREATED         STATUS         PORTS                                                                     NAMES
 5390b2ec1732   ubuntu_php:v1.1          "/run_php.sh"            7 minutes ago   Up 7 minutes                                                                             php
 32252fe6a544   mysql:8.0.30-oracle      "docker-entrypoint.s…"   7 minutes ago   Up 7 minutes                                                                             mysql
 975ecf45a190   ubuntu_nginx_base:v1.0   "/apps/nginx/sbin/ng…"   7 minutes ago   Up 7 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   nginx
 [root@rocky8 docker-compose]#ss -ntlp
 State Recv-Q Send-Q Local Address:Port   Peer Address:Port Process                                  
 LISTEN 0      128          0.0.0.0:22          0.0.0.0:*     users:(("sshd",pid=1039,fd=4))          
 LISTEN 0      100        127.0.0.1:25          0.0.0.0:*     users:(("master",pid=1524,fd=16))        
 LISTEN 0      128          0.0.0.0:443         0.0.0.0:*     users:(("docker-proxy",pid=279394,fd=4))
 LISTEN 0      128          0.0.0.0:80          0.0.0.0:*     users:(("docker-proxy",pid=279423,fd=4))
 LISTEN 0      128             [::]:22             [::]:*     users:(("sshd",pid=1039,fd=6))          
 LISTEN 0      100           [::1]:25             [::]:*     users:(("master",pid=1524,fd=17))        
 LISTEN 0      128             [::]:443           [::]:*     users:(("docker-proxy",pid=279401,fd=4))
 LISTEN 0      128             [::]:80             [::]:*     users:(("docker-proxy",pid=279429,fd=4))
 # 注意:端口映射和自定义网络模式冲突,先启动nginx容器,端口映射80和443,别的容器共享nginx容器网络,所以需要加上depends_on(意思依赖nginx容器)。
 # php也需要挂载/data/wordpress卷,因为nginx代理动态页面都需要php处理。

docker-compose编排启动LNMP的更多相关文章

  1. Docker Compose 一键部署LNMP

    Docker Compose 一键部署LNMP 目录结构 [root@localhost ~]# tree compose_lnmp/ compose_lnmp/ ├── docker-compose ...

  2. 使用Docker compose编排Laravel应用

    前言 Laravel官方开发环境推荐的是Homestead(其实就是一个封装好的Vagrant box),我感觉这个比较重,于是自己用Docker compose编排了一套开发环境,在这里分享下. 环 ...

  3. Docker Compose编排工具部署lnmp实践及理论(详细)

    目录 一.理论概述 编排 部署 Compose原理 二.使用docker compose 部署lnmp 三.测试 四.总结 一.理论概述 Docker Compose是一个定义及运行多个Docker容 ...

  4. [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境

    快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...

  5. Docker(二十六)-Docker Compose编排容器

    1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...

  6. Docker系列之(五):使用Docker Compose编排容器

    1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...

  7. docker compose 编排

    Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Comp ...

  8. 使用Docker Compose编排Spring Cloud微服务

    文章目录 微服务构建实例 简化Compose的编写 编排高可用的Eureka Server 编排高可用Spring Cloud微服务集群及动态伸缩 微服务项目名称 项目微服务中的角色 microser ...

  9. 使用docker compose编排容器

    一.安装docker compose 二进制包安装 1.安装 Docker Compose 从 官方 GitHub Release 处直接下载编译好的二进制文件即可 # curl -L https:/ ...

  10. 控制Docker Compose的启动顺序的一个思路

    起源 守护进程daemon 从守护进程的角度看Docker Compose Docker的解决方案 思路 代码 结果 起源 Docker Compose提供了一个depends_on参数. https ...

随机推荐

  1. Vue+Koa+MongoDB从零打造一个任务管理系统

    大概是在18年的时候,当时还没有疫情.当时工作中同时负责多个项目,有 PC 端运营管理后台的,有移动端 M 站的,有微信小程序的,每天 git 分支切到头昏眼花,每个需求提测需要发送邮件,而且周五要写 ...

  2. 一例智能网卡(mellanox)的网卡故障分析

    一例智能网卡(mellanox)的网卡故障分析 背景:这个是在centos 7.6.1810的环境上复现的,智能网卡是目前很多 云服务器上的网卡标配,在oppo主要用于vpc等场景,智能网卡的代码随着 ...

  3. Python小游戏——外星人入侵(保姆级教程)第一章 06让飞船移动

    系列文章目录 第一章:武装飞船 06:让飞船移动 一.驾驶飞船 下面来让玩家能够左右移动飞船.我们将编写代码,在用户按左或右箭头键时做出响应.我们将首先专注于向右移动,再使用同样的原理来控制向左移动. ...

  4. 长篇图解etcd核心应用场景及编码实战

    大家好啊,我是字母哥,今天写一篇关于etcd的文章,其实网上也有很多关于etcd的介绍,我就简明扼要,总结提炼,期望大家通过这一篇文章掌握etcd的核心知识以及编码技能! 本文首先用大白话给大家介绍一 ...

  5. 荣获 Neo4j Certified Professional

    在学习 Neo4j 的过程中,偶然得知官方的认证考试,所以当时就决定通过这项考试,功夫不负有心人,我成功的拿到了Neo4j Certified Professional认证证书 关于认证途径,请访问链 ...

  6. 手撸Router,还要啥Router框架?react-router/vue-router躺一边去

    有没有发现,在大家使用React/Vue的时候,总离不开一个小尾巴,到哪都得带着他,那就是react-router/vue-router,而基于它们的第三方框架又出现很多个性化约定和扩展,比如nuxt ...

  7. 【必知必会】手把手教你配置MySQL环境变量——图文详解

    一.先决条件 假设我们已经成功安装MySQL数据库.如果还有小伙伴不知道如何安装MySQL数据库,可以在本文下留言,留言数超20,则出一期"手把手教你安装MySQL数据库--图文详解&quo ...

  8. Windows DNS服务器策略

    Windows 2016开始微软在Windows服务器中引入了针对DNS服务器的策略.可以方便灵活的控制DNS服务器响应客户端的请求.这里举个例子,阻止某个网段的DNS查询.思路是这样的,定义一个网段 ...

  9. G&GH04 本地连接至远程

    注意事项与声明 平台: Windows 10 作者: JamesNULLiu 邮箱: jamesnulliu@outlook.com 博客: https://www.cnblogs.com/james ...

  10. harbor官方关于创建https的有关命令

    官方地址:https://goharbor.io/docs/2.0.0/install-config/configure-https/ 命令总结: openssl genrsa -out ca.key ...