75、docker-compose构建lnmp

一、docker-compose

docker-compose

容器一键化部署的工具,主要针对dockerfile,可以按照定制化的模式一键化部署dockerfile创建的容器。

定制:yaml文件。

1.1、docker-compose安装

拖程序包

[root@docker2 opt]# rz -E
rz waiting to receive.
[root@docker2 opt]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
[root@docker2 opt]# chmod 777 /usr/local/bin/docker-compose 
[root@docker2 opt]# docker-compose --version
Docker Compose version v2.18.0

1.2、yaml格式

#yaml是一种标记语言,直观的展示数据序列化的格式。可读性高
#数据格式的结构通过缩进来进行表示的。
#注意事项:
#1、大小写是严格区分的,敏感。
#2、通过缩进表示层级关系
#3、不能用table缩进,必须要用空格缩进
#4、#可以注释
#5、符号之后必须缩进一格:, - 
#6、特殊字符用单引号,字符串用双引号。
#数据结构:、
name: "chengqian"
age: 30
isStudent: true/false
#字符串,整数,布尔类型,也可以是小数点。
#列表结构,表示有序的元素的集合,使用-开头:
xy102:
  - chengqian
  - zhailiming
  - haopengcheng
#Maps(映射)相当于字典或者对象。用键值对表示:
man:
  name: chengqian
  age: 20
#多行文本块: | 
shuoming: |
  this is xy102
  chengqian is first
  ta 20 le

1.3、docker-compose命令

docker-compose:

ps 基于docker-pose拉取的镜像生成的容器

up docker-compose创建和启动容器

scale创建容器的数量

top 显示容器的进程

logs 看容器的输出日志

stop start restart 停止,启动,重启。

down 删除容器,网络,数据卷,镜像。

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

docker-compose:一键编排容器

-f:使用模板文件,必须是.yml结尾

up启动命令

在这里插入图片描述

1.4、docker-compose创建容器

[root@docker1 ~]# cd /opt/
[root@docker1 opt]# rz -E
rz waiting to receive.
[root@docker1 opt]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
[root@docker1 opt]# chmod 777 /usr/local/bin/docker-compose 
[root@docker1 opt]# docker-compose --version
Docker Compose version v2.18.0
[root@docker1 opt]# cd nginx/
[root@docker1 nginx]# ls
Dockerfile           nginx.conf                    wordpress-6.5.2-zh_CN.zip
nginx-1.22.0.tar.gz  wordpress-6.4.2-zh_CN.tar.gz
[root@docker1 nginx]# cd ..
[root@docker1 opt]# cp -r nginx/ nginx1/
[root@docker1 opt]# ls
html  mysql  mysql1  nginx  nginx1  php
[root@docker1 opt]# cd nginx1/
[root@docker1 nginx1]# ls
Dockerfile           nginx.conf                    wordpress-6.5.2-zh_CN.zip
nginx-1.22.0.tar.gz  wordpress-6.4.2-zh_CN.tar.gz


[root@docker1 nginx1]# cd ..
[root@docker1 opt]# vim docker-compose.yml
[root@docker1 opt]# ls
docker-compose.yml  html  mysql  mysql1  nginx  nginx1  php
[root@docker1 opt]# vim docker-compose.yml

version: '3'
services:
#定义镜像和容器的配置:
  nginx:
    container_name: web1
#定义容器的名字,web1
    hostname: nginx
#定义创建好之后,容器的主机名
    build:
#构建的是dockerfile。
      context: /opt/nginx
      dockerfile: Dockerfile
    ports:
      - 80:80
      - 443:443
    networks:
      mynet:
        ipv4_address: 172.18.0.10
    volumes:
      - /opt/nhtml:/usr/local/nginx/html/
networks:
  mynet:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/16
[root@docker1 opt]# docker-compose -f docker-compose.yml up -d
 ⠿ Container web1     Starting                                                0.2s 
Error response from daemon: driver failed programming external connectivity on endpoint web1 (e062714b7b7a2037ab1f03f6e30f176105662efef5ff4f90b9fc50af0e62bbf9): Bind for 0.0.0.0:80 failed: port is already allocated
[root@docker1 opt]# docker ps
CONTAINER ID   IMAGE        COMMAND                   CREATED      STATUS      PORTS                                       NAMES
b0028b9ac3df   php:lnmp     "/usr/local/php/sbin…"   2 days ago   Up 2 days   9000/tcp                                    php
aca49a030c7f   mysql:lnmp   "./mysqld"                2 days ago   Up 2 days   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp   mysql
dbdc336a4949   nginx:lnmp   "/usr/local/nginx/sb…"   2 days ago   Up 2 days   0.0.0.0:80->80/tcp, :::80->80/tcp           nginx
[root@docker1 opt]# docker rm -f nginx 
nginx
[root@docker1 opt]# docker-compose -f docker-compose.yml up -d
[+] Building 0.0s (0/0)                                                            
[+] Running 1/1
 ✔ Container web1  Started                                                    0.3s  [root@docker1 opt]# cd nhtml/
[root@docker1 nhtml]# ls
[root@docker1 nhtml]# echo 123 > index.html
[root@docker1 nhtml]# curl 192.168.168.71
123

在这里插入图片描述

[root@docker1 opt]# vim docker-compose.yml

version: '3'
services:
#定义镜像和容器的配置:
  nginx1:
    container_name: web2
#定义容器的名字,web2
    hostname: nginx2
#定义创建好之后,容器的主机名
    build:
#构建的是dockerfile。
      context: /opt/nginx1
      dockerfile: Dockerfile
    ports:
      - 81:80
      - 444:443
    networks:
     opt_mynet:
        ipv4_address: 172.18.0.11
    volumes:
      - /opt/nhtml:/usr/local/nginx/html/
networks:
  opt_mynet:
    external: true





[root@docker1 opt]# curl 192.168.168.71:81
123
[root@docker1 opt]# cd nhtml/
[root@docker1 nhtml]# ls
index.html
[root@docker1 nhtml]# echo 1234 > index.html 
[root@docker1 nhtml]# curl 192.168.168.71:81
1234

在这里插入图片描述

1.5、docker-compose构建lnmp

version: '3'
services:
#定义镜像和容器的配置:
  nginx:
    container_name: web1
#定义容器的名字,web1
    hostname: nginx
#定义创建好之后,容器的主机名
    build:
#构建的是dockerfile。
      context: /opt/nginx
      dockerfile: Dockerfile
    ports:
      - 80:80
      - 443:443
    networks:
      opt_mynet:
        ipv4_address: 172.111.0.10
    volumes:
      - /opt/nhtml:/opt/docker-nginx

#定义镜像和容器的配置:
  mysql:
    container_name: mysql
#定义容器的名字,mysql
    hostname: mysql
#定义创建好之后,容器的主机名
    build:
#构建的是dockerfile。
      context: /opt/mysql
      dockerfile: Dockerfile
    ports:
      - 3306:3306
    networks:
      opt_mynet:
        ipv4_address: 172.111.0.20
    privileged: true
    volumes:
      - /opt/mysql:/opt/docker-mysql
  php:
    container_name: php
#定义容器的名字,mysql
    hostname: php
#定义创建好之后,容器的主机名
    build:
#构建的是dockerfile。
      context: /opt/php
      dockerfile: Dockerfile
    ports:
      - 9000:9000
    networks:
      opt_mynet:
        ipv4_address: 172.111.0.30
    volumes_from:
      - "nginx"
      - "mysql"
networks:
  opt_mynet:
    driver: bridge
    ipam:
      config:
        - subnet: 172.111.0.0/24

在这里插入图片描述

自定义网络已存在

[root@docker1 opt]# docker network rm -f mynetwrk ##删除自定义网络

[root@docker1 opt]# docker-compose -f docker-compose.yml up -d

[root@docker1 opt]# docker-compose build --no-cache ##清理缓存

在这里插入图片描述

在这里插入图片描述

2、课程笔记
[root@test1 opt]# cat docker-compose.yml 
version: '3'
services:
  nginx:
    hostname: nginx
    container_name: nginx_server
    build:
      context: /opt/nginx/
      dockerfile: Dockerfile
    ports:
      - 80:80
    networks:
      lnmp:
        ipv4_address: 172.111.0.10
    #volumes:
      #- /opt/nginx:/opt/docer-nginx
    
  mysql:
    hostname: mysql
    container_name: mysql_server
    build:
      context: /opt/mysql/
      dockerfile: Dockerfile
    ports:
      - 3306:3306
    networks:
      lnmp:
        ipv4_address: 172.111.0.20
    privileged: true
    #volumes:
      #- /opt/mysql:/opt/docker-mysql
   
  php:
    hostname: php
    container_name: php_server
    build:
      context: /opt/php/
      dockerfile: Dockerfile
    ports:
      - 9000:9000
    networks:
      lnmp:
        ipv4_address: 172.111.0.30
    volumes_from:
      - nginx
      - mysql

networks:
  lnmp:
    driver: bridge
    ipam:
      config:
        - subnet: 172.111.0.0/24
        
        
 docker-compose build --no-cache #清理缓存,必须是docker-compose.yml

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
tworks:
lnmp:
ipv4_address: 172.111.0.30
volumes_from:
- nginx
- mysql

networks:
lnmp:
driver: bridge
ipam:
config:
- subnet: 172.111.0.0/24

docker-compose build --no-cache #清理缓存,必须是docker-compose.yml








[外链图片转存中...(img-mcgxtEUH-1724053887304)]
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用docker-compose搭建lnmp的步骤: 1.创建一个项目目录,例如lnmp,进入该目录并创建一个docker-compose.yml文件。 2.在docker-compose.yml文件中定义三个服务:nginx、php和mysql。其中,nginx服务使用官方的nginx镜像,php服务使用自己编译的php-fpm镜像,mysql服务使用官方的mysql镜像。 3.在docker-compose.yml文件中定义三个网络:frontend、backend和mysql。其中,frontend网络用于连接nginx和php服务,backend网络用于连接php和mysql服务,mysql网络用于连接mysql服务。 4.在docker-compose.yml文件中定义三个卷:nginx-conf、nginx-logs和php-src。其中,nginx-conf卷用于存放nginx的配置文件,nginx-logs卷用于存放nginx的日志文件,php-src卷用于存放php的源代码。 5.在docker-compose.yml文件中定义三个环境变量:MYSQL_ROOT_PASSWORD、MYSQL_DATABASE和MYSQL_USER。其中,MYSQL_ROOT_PASSWORD用于设置mysql的root用户密码,MYSQL_DATABASE用于设置mysql的默认数据库,MYSQL_USER用于设置mysql的普通用户。 6.在docker-compose.yml文件中定义三个挂载点:./nginx.conf:/etc/nginx/nginx.conf、./nginx-logs:/var/log/nginx和./php-src:/var/www/html。其中,./nginx.conf用于挂载nginx的配置文件,/nginx-logs用于挂载nginx的日志文件,./php-src用于挂载php的源代码。 7.在项目目录中创建一个nginx.conf文件,用于配置nginx的虚拟主机。 8.在项目目录中创建一个index.php文件,用于测试php服务是否正常工作。 9.在项目目录中运行docker-compose up命令,启动lnmp服务。 10.在浏览器中访问http://localhost,即可看到php服务返回的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值