docker-compose编排启动LNMP
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的更多相关文章
- Docker Compose 一键部署LNMP
Docker Compose 一键部署LNMP 目录结构 [root@localhost ~]# tree compose_lnmp/ compose_lnmp/ ├── docker-compose ...
- 使用Docker compose编排Laravel应用
前言 Laravel官方开发环境推荐的是Homestead(其实就是一个封装好的Vagrant box),我感觉这个比较重,于是自己用Docker compose编排了一套开发环境,在这里分享下. 环 ...
- Docker Compose编排工具部署lnmp实践及理论(详细)
目录 一.理论概述 编排 部署 Compose原理 二.使用docker compose 部署lnmp 三.测试 四.总结 一.理论概述 Docker Compose是一个定义及运行多个Docker容 ...
- [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境
快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...
- Docker(二十六)-Docker Compose编排容器
1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...
- Docker系列之(五):使用Docker Compose编排容器
1. 前言 Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器. 使用Compose 基本上分为三步: Dockerfile 定义应用 ...
- docker compose 编排
Compose是Docker的服务编排工具,主要用来构建基于Docker的复杂应用,Compose 通过一个配置文件来管理多个Docker容器,非常适合组合使用多个容器进行开发的场景. 说明:Comp ...
- 使用Docker Compose编排Spring Cloud微服务
文章目录 微服务构建实例 简化Compose的编写 编排高可用的Eureka Server 编排高可用Spring Cloud微服务集群及动态伸缩 微服务项目名称 项目微服务中的角色 microser ...
- 使用docker compose编排容器
一.安装docker compose 二进制包安装 1.安装 Docker Compose 从 官方 GitHub Release 处直接下载编译好的二进制文件即可 # curl -L https:/ ...
- 控制Docker Compose的启动顺序的一个思路
起源 守护进程daemon 从守护进程的角度看Docker Compose Docker的解决方案 思路 代码 结果 起源 Docker Compose提供了一个depends_on参数. https ...
随机推荐
- Kotlin协程解析系列(上):协程调度与挂起
vivo 互联网客户端团队- Ruan Wen 本文是Kotlin协程解析系列文章的开篇,主要介绍Kotlin协程的创建.协程调度与协程挂起相关的内容 一.协程引入 Kotlin 中引入 Corout ...
- MybatisPlus核心功能——实现CRUD增删改查操作 (包含条件构造器)
CRUD 官方文档:https://baomidou.com/ (建议多看看官方文档,每种功能里面都有讲解)[本文章使用的mybatisplus版本为3.5.2] 条件构造器 一般都是用service ...
- 记一次有意思的 SQL 实现 → 分组后取每组的第一条记录
开心一刻 今天,朋友气冲冲的走到我面前 朋友:我不是谈了个女朋友,谈了三个月嘛,昨天我偷看她手机,你猜她给我备注什么 我:备注什么? 朋友:舔狗 2 号! 我一听,气就上来了,说道:走,找她去,这婆娘 ...
- 【java】学习路径20-Date、Calender日期与时间
简单的说,Date和Calender基本上是差不多的. 在最开始的时候只有Date,没有Calender. 在jdk不断更新的时候,发现了Date有一点缺陷,于是推出了Calender. // Dat ...
- Java开发学习(二十七)----SpringMVC之Rest风格解析及快速开发
一.REST简介 REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格 当我们想表示一个网络资源的时候,可以使用两种方式: 传统风格资源描 ...
- 华为云计算灾备产品BCManager 及eBackup的组网方式
BCManager的作用 OceanStor BCManager是面向企业数据中心存储容灾业务的管理软件,实现容灾.双活.两地三中心等容灾环境的管理,具备多种数据库应用与虚拟化环境的容灾管理功能,简单 ...
- ThreadLocal源码学习笔记
系列文章目录和关于我 一丶ThreadLocal结构 每一个Thread对象都有一个名为threadLocals类型为ThreadLocal.ThreadLocalMap的属性,ThreadLocal ...
- bat查找文件
举例如下 @dir > 1.txt /s /a /b d:\*.mp4 以后再作解释
- 跨语言调用C#代码的新方式-DllExport
简介 上一篇文章使用C#编写一个.NET分析器文章发布以后,很多小伙伴都对最新的NativeAOT函数导出比较感兴趣,今天故写一篇短文来介绍一下如何使用它. 在以前,如果有其他语言需要调用C#编写的库 ...
- AVL Tree (1) - Definition, find and Rotation
1. 定义 (15-1) [AVL tree]: 一棵空二叉树是 AVL tree; 若 T 是一棵非空二叉树, 则 T 满足以下两个条件时, T 是一棵 AVL tree: T_LeftSubtre ...