资讯专栏INFORMATION COLUMN

docker 搭建lnmp环境

msup / 833人阅读

摘要:基础命令关于搜索下载查看或者删除单个删除多个删除查看信息占用关于查看重启停止杂项命令网络相关清除网络缓存查看网络列表查看详情挂载目录清除缓存查看列表查看详情系统相关系统信息查看占用清除所有包含构建失败的镜像没有被使用的网络配

docker基础命令 关于images

搜索 docker search php

下载 docker pull php:7.3.6-fpm-alpine3.9

查看 docker images 或者 docker image ls

删除单个 docker rmi imageID

删除多个 docker rmi -f $(docker image ls -aq)

删除NONE docker rmi -f $(docker images -f "dangling=true" -q)

查看信息 docker inspect imageID

占用 docker stats

关于container

查看 docker ps -a

重启 docker restart containerID

停止 docker stop containerID

杂项命令

网络相关

清除网络缓存 docker network prune

查看网络列表 docker network ls

查看详情 docker network inspect netwokrNAME

挂载目录

清除缓存 docker volume prune

查看列表 docker volume ls

查看详情 docker volume inspect VOLUMENAME

系统相关

系统信息 docker system info

查看占用 docker system df

清除所有 docker system prune
包含构建失败的镜像、没有被使用的网络配置、已经暂停的容器

Dockerfile详解 文件命令详解

FROM 指定哪个镜像作为你的基础镜像

LABEL 你可以给你的镜像增加标签(labels)来协助通过项目组织镜像,记录授权信息,帮助自动化,或者其他原因。

可以通过docker inspect imageID查看

EXPOSE 端口开启,只是显示的声明该端口可用,方便调用者,具体的端口映射还需要在docker run的时候通过-p来指定,如果-p后面不跟端口号,则使用EXPOSE设置的值

VOLUME 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME ["目录"]

USER 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户

ENV 多用于配置环境变量

COPY 复制 轻量,更透明,建议使用,因为镜像构建要竟可能小的占用空间,所以建议使用wget讲远程文件下载到本地,解压再copy到镜像中,不然使用ADD的话,还要解压删除下载包

ADD 复制 可以解压tar包,也可下载远程网络文件

RUN 执行命令并创建新的Image Layer

CMD 设置容器启动后默认执行的命令和参数

ENTRYPOINT 设置容器启动时运行的命令

构建镜像的注意点

尽量选择 微缩基础镜像 例如alpine 减少镜像的体积

尽量不要打包无用的文件到镜像中 减少镜像的体积

尽量删除 各种编译、下载、安装过程中产生的缓存文件 减少镜像体积

尽量使用分阶段构建镜像 一步步的扩展镜像功能 避免多层数镜像的产生

准确使用dockerfile的关键字 例如CMD 和ENTRYPOINT 、 COPY 和ADD

构建命令详解
docker build -f "Dockerfile" -t my-mysql:v1.0 .

可以使用docker build --help查看

docker-compose 文件命令

命令文档地址

该文件是主配置文件,主要包含versionservicesnetwork,其中versionservices为必要元素。

常用命令:

image 指定购将的基础镜像

build 指定包含构建上下文的路径, 或作为一个对象,该对象具有 context 和指定的 dockerfile 文件以及 args 参数值

context 指定 Dockerfile 文件所在的路径

dockerfile 指定 context 指定的目录下面的 Dockerfile 的名称(默认为 Dockerfile)

args Dockerfile 在 build 过程中需要的参数 (等同于 docker container build --build-arg 的作用)

cache_from # v3.2中新增的参数, 指定缓存的镜像列表 (等同于 docker container build --cache_from 的作用)

labels v3.3中新增的参数, 设置镜像的元数据 (等同于 docker container build --labels 的作用)

shm_size v3.5中新增的参数, 设置容器 /dev/shm 分区的大小 (等同于 docker container build --shm-size 的作用)

command # 覆盖容器启动后默认执行的命令, 支持 shell 格式和 [] 格式

container_name 指定容器名称

depends_on 指定容器启动的依赖关系,此选项在 v3 版本中 使用 swarm 部署时将忽略该选项

links 容器关联,版本3已经不建议使用,建议使用网络做容器通信

env_file 环境变量文件

environment 设置环境变量, environment 的值可以覆盖 env_file 的值 (等同于 docker run --env 的作用)

expose 暴露端口, 但是不能和宿主机建立映射关系, 类似于 Dockerfile 的 EXPOSE 指令

ports 端口映射

external_links 连接不在 docker-compose.yml 中定义的容器或者不在 compose 管理的容器

extra_hosts 添加 host 记录到容器中的 /etc/hosts 中

logging 日志统一输出,方便做日志统计

networks 容器网络配置

restart 自动重启容器,容器挂掉之后自动重启机制

volumes 数据卷映射,也可以以叫做目录共享

CLI命令

启动服务 docker-compose up -d --build

暂停服务 docker-compose down

重启服务 docekr-compose restart

进入 docekr-compose exec $1 $2

$1 docker-compose.yml文件services中定义的服务名称

$2 根据基础镜像服务器决定,一般apline为/bin/sh,其他为"/bin/bash"

查看 docker-compose ps

实操,docker-compose搭建项目 创建项目目录
 mkdir php
创建如下项目结构

sites 目录放置项目文件

services 目录放置服务相关配置

script 放置自定义脚本

├── Readme.md
├── docker-compose.yml
├── script
├── services
│   ├── mariadb
│   │   └── Dockerfile
│   ├── nginx
│   │   ├── Dockerfile
│   │   ├── conf.d
│   │   │   └── default.conf
│   │   └── nginx.conf
│   ├── php
│   │   └── Dockerfile
│   └── redis
│       └── Dockerfile
└── sites
    ├── index.html
    └── index.php

8 directories, 10 files
编辑docker-compose文件
version: "3"
services: 
  php:
    build: ./services/php
    ports: 
      - "9001:9000"
    container_name: lnmp-php
    restart: always
    volumes: 
      - ./sites:/www
      - ./services/php/etc:/usr/local/etc
    networks:
      lnmp_net:
        ipv4_address: 101.11.11.10

  nginx:
    build: ./services/nginx
    ports:
      - "81:80"
      - "444:443"
    container_name: lnmp-nginx
    restart: always
    volumes: 
      - ./sites:/www
      - ./services/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./services/nginx/conf.d:/etc/nginx/conf.d:rw
    networks:
      lnmp_net:
        ipv4_address: 101.11.11.11

  redis:
    build: ./services/redis
    ports: 
      - "6380:6379"
    container_name: lnmp-redis
    networks:
      lnmp_net:
        ipv4_address: 101.11.11.12

  mariadb:
    build: ./services/mariadb
    ports: 
      - "3307:3306"
    container_name: lnmp-mariadb
    restart: always
    volumes: 
      - ./data/mariadb:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123qwe!@#
      MYSQL_USER: demo
      MYSQL_PASSWORD: 123456
    networks:
      lnmp_net:
        ipv4_address: 101.11.11.13

networks:
  lnmp_net:
    driver: bridge
    ipam:
      config:
      - subnet: 101.11.11.0/20
编辑services/nginx文件
FROM nginx:1.17.0-alpine

# 更新安装源
RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g" /etc/apk/repositories

# 设置时区为上海
RUN apk update && apk add --upgrade 
    && apk add tzdata 
    && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
    && echo "Asia/Shanghai" > /etc/timezone 
    && apk del tzdata
编辑services/php文件
FROM php:7.3.6-fpm-alpine3.9

# 更新安装源
RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g" /etc/apk/repositories

# 设置时区为上海
RUN apk update && apk add --no-cache tzdata autoconf gcc g++ make zlib-dev  curl-dev
    && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
    && echo "Asia/Shanghai" > /etc/timezone 
    && apk del tzdata 
    && docker-php-ext-install mysqli pdo_mysql opcache 
    && pecl install grpc protobuf xdebug yaf yar swoole   
    && docker-php-ext-enable  xdebug yaf yar swoole grpc protobuf 
以上我们的lnmp环境基本搭建完毕,下面我们针对Php解析做相关的配置
修改services/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  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}
修改services/nginx/conf.d目录下文件
该目录是各个项目的配置文件,可根据需求配置单个或多个服务
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

        #root   /usr/share/nginx/html;
    root   /www;
    index index.php index.html index.htm;


    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ .php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

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

    # deny access to .htaccess files, if Apache"s document root
    # concurs with nginx"s one
    #
    #location ~ /.ht {
    #    deny  all;
    #}
}
启动服务
cd php && docker-compose up --build -d 
上述的步骤根据网速的docker的配置执行时间个不相同,因为php中编译了些许扩展,也可根据自身需求做响应的删减
通过浏览器访问http://127.0.0.1:81,如果看到了phpinfo的输出信息,那么恭喜你,你的lnmp环境已经部署完成

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31669.html

相关文章

  • 分解dockerlnmp环境搭建中的作用

    摘要:如果不用我们可能将上述讲的命令每搭建一次就需要执行一遍,有没有能统一管理的有,就是在环境搭建中的作用快速创建镜像,快速创建并运行容器,实现统一管理。 前言 初学者在dcoker学习过程中,可能不太清楚docker中那么多的命令,参数,工具在lnmp环境搭建中起了什么作用,下面跟着我来熟悉一下。(本文面向的是不怎么熟悉linux的:phper) 镜像,容器,仓库 镜像:Docker 镜像...

    tommego 评论0 收藏0
  • docker 搭建lnmp开发环境

    摘要:学习心得前言耗时一周零三天,终于用搭建起自己的开发环境。来搭建一下环境,然后,桌面没了。作为过来人,我只想说,一定要只做一件事,不要过多的去研究,我们只是想搭建本地运行环境。 docker学习心得 前言 耗时一周零三天,终于用docker搭建起自己的开发环境。详细过程:请参考分解docker在lnmp环境搭建中的作用showImg(https://segmentfault.com/im...

    Hydrogen 评论0 收藏0
  • docker搭建lnmp环境

    摘要:项目由一组关联的应用容器组成的一个完整业务单元,在文件中定义。 docker搭建lnmp环境 一、Dockerfile定制镜像 二、docker-compose 三、docker-compose编排lnmp环境 1、mysql 2、redis 3、mongo 4、nginx 5、php 6、完整版 四、参考 有收获的话请加颗小星星,没有收获的话可以 反对 没有帮助 ...

    beanlam 评论0 收藏0
  • docker 搭建lnmp环境

    摘要:基础命令关于搜索下载查看或者删除单个删除多个删除查看信息占用关于查看重启停止杂项命令网络相关清除网络缓存查看网络列表查看详情挂载目录清除缓存查看列表查看详情系统相关系统信息查看占用清除所有包含构建失败的镜像没有被使用的网络配 docker基础命令 关于images 搜索 docker search php 下载 docker pull php:7.3.6-fpm-alpine3....

    cucumber 评论0 收藏0
  • CentOS 7 使用 Docker 快速搭建 LNMP 环境

    摘要:配置文件配置配置文件配置文件配置文件太大就不贴了,直接下载然后本地修改吧。不会使用的使用命令进行替换。是一种推出的免费的公共镜像库服务。本地对镜像打提交镜像到仓库参考Docker 安装安装 Dockercurl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun配置国内镜像mkdir -p /etc/docker cat...

    Tecode 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<