Docker Compose编排部署LNMP服务

目录

安装docker-ce

阿里云镜像加速器

文件

启动


安装docker-ce

root@localhost \~\]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo --2023-08-03 18:34:32-- http://mirrors.aliyun.com/repo/Centos-7.repo 正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 140.249.32.202, 140.249.32.203, 140.249.32.204, ... 正在连接 mirrors.aliyun.com (mirrors.aliyun.com)\|140.249.32.202\|:80... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度:2523 (2.5K) \[application/octet-stream

正在保存至: "/etc/yum.repos.d/CentOS-Base.repo"

100%[============================================================>] 2,523 --.-K/s 用时 0s

2023-08-03 18:34:37 (356 MB/s) - 已保存 "/etc/yum.repos.d/CentOS-Base.repo" [2523/2523])

root@localhost \~\]# yum -y install yum-utils device-mapper-persistent-data lvm2 已加载插件:fastestmirror, product-id, search-disabled-repos, subscription-manager 可能报错 把原来的删掉从新安装 > Transaction check error: > > package device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64 is already installed > > 错误概要 > > ------------- > \[root@localhost \~\]# yum -y install yum-utils device-mapper-persistent-data lvm2 > > \[root@localhost \~\]# yum -y install yum-utils device-mapper-persistent-data lvm2 > > \[root@localhost \~\]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo > > 已加载插件:fastestmirror, product-id, subscription-manager > > This system is not registered with an entitlement server. You can use subscription-manager to register. > > adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo > > grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo > > repo saved to /etc/yum.repos.d/docker-ce.repo ## ******阿里云镜像加速器****** > \[root@localhost \~\]# yum -y install docker-ce > > \[root@localhost \~\]# systemctl start docker > > \[root@localhost \~\]# systemctl enable docker > > Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service. > > \[root@localhost \~\]# vim /etc/docker/daemon.json > > \[root@localhost \~\]# cat /etc/docker/daemon.json > > { > > "registry-mirrors":\[ "https://nyakyfun.mirror.aliyuncs.com"

}

root@localhost \~\]# systemctl daemon-reload \[root@localhost \~\]# systemctl restart docker \[root@localhost \~\]# docker version Client: Docker Engine - Community Version: 24.0.5 API version: 1.43 Go version: go1.20.6 Git commit: ced0996 Built: Fri Jul 21 20:39:02 2023 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 24.0.5 API version: 1.43 (minimum version 1.12) Go version: go1.20.6 Git commit: a61e2b4 Built: Fri Jul 21 20:38:05 2023 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.22 GitCommit: 8165feabfdfe38c65b599c4993d227328c231fca runc: Version: 1.1.8 GitCommit: v1.1.8-0-g82f18fe docker-init: Version: 0.19.0 GitCommit: de40ad0

配置基础镜像

root@localhost \~\]# cat centos-7-x86_64.tar.gz \| docker import - centos:7 sha256:2069099083a89e56bd326f5352b6d0e7d3ad02ba20d00b5b0305b810501db76c 之前可能有冲突所以删除 \[root@localhost \~\]# docker rm -f $(docker ps -aq) c0e35fc73253

文件

复制代码
编写compose文件
[root@compose compose_lnmp]# cat docker-compose.yml 
version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 80:80
    networks:
      - lnmp
    volumes:
      - ./wwwroot:/usr/local/nginx/html

  php:
    hostname: php
    build:
      context: ./php
      dockerfile: Dockerfile
    ports:
      - 9000:9000
    networks:
      - lnmp
    volumes:
      - ./wwwroot:/usr/local/nginx/html

  mysql:
    hostname: mysql
    image: mysql:5.6
    ports:
      - 3306:3306
    networks:
      - lnmp
    volumes:
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/data:/var/lib/mysql
    command: --character-set-server=utf8
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: wordpress
      MYSQL_USER: user
      MYSQL_PASSWORD: user123

networks:
  lnmp:

可以看到一份标准配置文件应该包含 version、services、networks 三大部分,共有三级标签,每一级都是缩进两个空格。下面来详细说明一下里面的内容:
version: '3'  这是定义compose的版本号为version 3,可以参考官方文档详细了解具体有哪些版本 https://docs.docker.com/compose/compose-file/
services:
nginx:这是services下面的二级标签,名字用户自己定义,它将是服务运行后的名称;
hostname: nginx 这是定义容器的主机名,将写入到/etc/hostname中;
build:
 context: ./nginx 指定nginx服务的上下文路径;
 dockerfile:Dockerfile 指定通过上面指定路径中的Dockerilfe来构建;
ports:
 - 80:80 端口映射没什么好说的;
networks:
 -lnmp 指定的网络环境
volumes:把宿主机的/wwwroot目录绑定到容器中的/usr/local/nginx/html目录;

php:这个二级标签服务和下面的内容跟nginx差不多;
mysql:这个二级标签服务也和nginx、php差不多,唯一不同的是多了个images标签、还有定义了些环境变量。
image: mysql:5.6 它是通过mysql:5.6镜像来构建mysql服务器,前面nginx、php都指定了上下文通过Dockerfile来构建的。
  environment:
   MYSQL_ROOT_PASSWORD:定义root用户密码变量为123456;
   MYSQL_DATABASE:定义了数据变量为wordpress;
   MYSQL_USER:定义了普通用户变量为user;
   MYSQL_PASSWORD:定义了普通用户密码变量为user123;
3、networks:
   lnmp: 相当于执行docker network create lnmp命令了;

[root@localhost compose_lnmp]# ll
总用量 4
-rw-r--r--. 1 root root 807 6月   3 2019 docker-compose.yml
drwxr-xr-x. 4 root root  30 6月  22 2019 mysql
drwxr-xr-x. 2 root root  83 8月   3 20:57 nginx
drwxr-xr-x. 2 root root  64 8月   3 20:56 php
drwxr-xr-x. 2 root root  41 6月  22 2019 wwwroot
[root@localhost compose_lnmp]# ls mysql
conf  data
[root@localhost compose_lnmp]# vim mysql/conf/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/tmp/mysql.sock
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysql/mysql.log
pid-file=/tmp/mysql.pid

[root@localhost compose_lnmp]# vim nginx/nginx.conf 

user nginx nginx;
worker_processes 1;
worker_rlimit_nofile 102400;

events {
        use epoll;
        worker_connections 4096;
}

events {
        use epoll;
        worker_connections 4096;
}

http {
    include       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  logs/access.log  main;
    sendfile        on;
    keepalive_timeout  65;

        server {
        listen       80;
        server_name  localhost;
        charset utf-8;

        location / {
            root   html;
            index  index.php index.html index.htm;
        }
        location ~ \.php$ {
            root html;
                        fastcgi_index index.php;
            fastcgi_pass 192.168.50.59:9000;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }
}

daemon off;

[root@localhost compose_lnmp]# vim mysql/data/
auto.cnf            ib_logfile0         mysql/              wordpress/          
ibdata1             ib_logfile1         performance_schema/ 
[root@localhost compose_lnmp]# vim nginx/nginx.conf 
[root@localhost compose_lnmp]# vim php/              源文件照搬的
Dockerfile         php-5.6.39.tar.gz  php.ini            
[root@localhost compose_lnmp]# vim php/php.ini 

[PHP]

;;;;;;;;;;;;;;;;;;;
; About php.ini   ;
;;;;;;;;;;;;;;;;;;;

[root@localhost compose_lnmp]# vim wwwroot/index.
index.html  index.php   
[root@localhost compose_lnmp]# vim wwwroot/index.html 
[root@localhost compose_lnmp]# vim wwwroot/index.php 

<?php
phpinfo();
?>
~     

[root@localhost compose_lnmp]# vim wwwroot/index.html 

www.crushlinux.com
~                   

[root@localhost ~]# /root/docker-compose -f docker-compose.yml up -d

-bash: /root/docker-compose: 权限不够

[root@localhost ~]# chmod 777 /root/docker-compose

[root@localhost ~]# cd compose_lnmp

启动

[root@localhost compose_lnmp]# /root/docker-compose -f docker-compose.yml up -d

成功

查看

root@localhost compose_lnmp\]# /root/docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------------------- compose_lnmp_mysql_1 docker-entrypoint.sh --cha ... Up 0.0.0.0:3306-\>3306/tcp,:::3306-\>3306/tc p compose_lnmp_nginx_1 /run.sh Up 0.0.0.0:80-\>80/tcp,:::80-\>80/tcp compose_lnmp_php_1 ./sbin/php-fpm -c /usr/loc ... Up 0.0.0.0:9000-\>9000/tcp,:::9000-\>9000/tc

成功

拜拜了

相关推荐
旧故新长31 分钟前
访问 Docker 官方镜像源(包括代理)全部被“重置连接”或超时
运维·docker·容器
white.tie1 小时前
Docker部署单节点Elasticsearch
elasticsearch·docker·jenkins
柳如烟@1 小时前
在Rocky Linux 9.5上部署MongoDB 8.0.9:从安装到认证的完整指南
linux·运维·mongodb
搬码临时工2 小时前
电脑怎么远程访问服务器?4种常见的简单方法
运维·服务器·网络·异地访问
QQ2740287562 小时前
Kite AI 自动机器人部署教程
linux·运维·服务器·人工智能·机器人·web3
文牧之2 小时前
PostgreSQL 配置设置函数
运维·数据库·postgresql
.小墨迹2 小时前
Apollo学习——planning模块(3)之planning_base
linux·开发语言·c++·学习·自动驾驶
K龙3 小时前
私有资产测绘&安全流水线Shovel
运维·安全·开发·其它
影龙帝皖3 小时前
Linux服务之lvs+keepalived nginx+keepalived负载均衡实例解析
linux·nginx·lvs
程序猫A建仔3 小时前
【物联网】基于树莓派的物联网开发【4】——WIFI+SSH远程登录树莓派
运维·物联网·ssh