VPS侦探论坛

 找回密码
 注册
查看: 2997|回复: 1

基于centos 7 的lnmpa Dockerfile和启动脚本,求大神指点

[复制链接]
发表于 2019-12-17 15:40:55 | 显示全部楼层 |阅读模式

    小白花了几天基于一位大神修改了个lnmpa的docker镜像,基于centos7,但是做出来镜像有3.54G之大,求大神指点怎么优化,谢谢!!下面附上Dockerfile文件和启动文件脚本。    过程中参考资料:https://hub.docker.com/r/itxq/lnmpa/dockerfile
    Dockerfile中可以针对lnmpa一键安装包需要选择的各程序版本做对应修改。
    在线等大神指点优化。
封装目录
     web├── Dockerfile
└── run-lnmpa
封装命令(当前目录下)
  1. docker build --rm -t lnmpa .
复制代码
Dockerfile
  1. #基于Centos镜像
  2. FROM centos:7
  3. #镜像作者信息
  4. MAINTAINER 孤鸿 <wsc@wsczx.com>
  5. #LNMPA 版本
  6. ARG LNMPA_VERSION="1.6"
  7. #MySql版本
  8. #You have 11 options for your DataBase install.
  9. #1: Install MySQL 5.1.73
  10. #2: Install MySQL 5.5.62 (Default)
  11. #3: Install MySQL 5.6.44
  12. #4: Install MySQL 5.7.26
  13. #5: Install MySQL 8.0.13
  14. #6: Install MariaDB 5.5.63
  15. #7: Install MariaDB 10.0.38
  16. #8: Install MariaDB 10.1.40
  17. #9: Install MariaDB 10.2.24
  18. #10: Install MariaDB 10.3.15
  19. #0: DO NOT Install MySQL/MariaDB
  20. ARG DBSelect="10"
  21. #MySQL ROOT 密码
  22. ARG DB_ROOT_PASSWORD="P@ssw0rd"
  23. #启用InnoDB Storage Engine
  24. ARG InnoDBSelect="Y"
  25. #PHP版本
  26. #You have 9 options for your PHP install.
  27. #1: Install PHP 5.2.17
  28. #2: Install PHP 5.3.29
  29. #3: Install PHP 5.4.45
  30. #4: Install PHP 5.5.38
  31. #5: Install PHP 5.6.40 (Default)
  32. #6: Install PHP 7.0.33
  33. #7: Install PHP 7.1.30
  34. #8: Install PHP 7.2.19
  35. #9: Install PHP 7.3.6
  36. ARG PHPSelect="9"
  37. #Memory Allocator名称
  38. #You have 3 options for your Memory Allocator install.
  39. #1: Don't install Memory Allocator. (Default)
  40. #2: Install Jemalloc
  41. #3: Install TCMalloc
  42. ARG MemorySelect="2"
  43. #Administrator Email Address
  44. ARG AdminEmail="wsc@wsczx.com"
  45. #Apache版本
  46. #You have 2 options for your Apache install.
  47. #1: Install Apache 2.2.34
  48. #2: Install Apache 2.4.39 (Default)
  49. ARG ApacheSelect="2"
  50. #安装依赖
  51. RUN yum install -y wget && yum install -y expect && yum install -y vim && yum clean all
  52. #添加shell脚本
  53. COPY ./run-lnmpa /usr/bin/
  54. #安装LNMPA & Redis & Opcache & 创建启动脚本软连 & 清理安装文件
  55. RUN mkdir -m 777 -p /data \       
  56.         && cd /data \
  57.         && wget http://soft.vpser.net/lnmp/lnmp${LNMPA_VERSION}-full.tar.gz -cO lnmp${LNMPA_VERSION}-full.tar.gz && tar zxf lnmp${LNMPA_VERSION}-full.tar.gz && cd lnmp${LNMPA_VERSION}-full \
  58.         && DBSelect="${DBSelect}" \
  59.         DB_Root_Password="${DB_ROOT_PASSWORD}" \
  60.         InstallInnodb="${InnoDBSelect}" \
  61.         PHPSelect="${PHPSelect}" \
  62.         SelectMalloc="${MemorySelect}" \
  63.         ApacheSelect="${ApacheSelect}" \
  64.         ServerAdmin="${AdminEmail}" \
  65.         ./install.sh lnmpa \
  66.         && cd /data/lnmp${LNMPA_VERSION}-full && yes|./addons.sh install redis && yes|./addons.sh install opcache \
  67.         && chmod a+x /usr/bin/run-lnmpa \
  68.         && rm -rf /data/*
  69. #镜像信息
  70. LABEL org.label-schema.schema-version="1.0.1" \
  71.     org.label-schema.name="Docker LNMPA" \
  72.     org.label-schema.vendor="孤鸿wsczx.com" \
  73.     org.label-schema.license="Apache Licence 2.0" \
  74.     org.label-schema.build-date="201912.11"
  75. #开放端口
  76. EXPOSE 3306 443 80
  77. # 启动命令
  78. CMD ["run-lnmpa"]
复制代码
启动脚本

  1. #!/bin/bash
  2. ##配置文件初始化
  3. echo "数据和配置文件初始化开始"
  4. #初始化Nginx
  5. if [ -d "/data/nginx/" ];then
  6.         echo "nginx 目录不为空,自动使用当前目录数据和配置文件"
  7.         rm -rf /usr/local/nginx
  8.         ln -sfv /data/nginx /usr/local/nginx
  9. else
  10.         mkdir -m 775 -p /data/nginx
  11.         cp -a -p /usr/local/nginx/* /data/nginx
  12.         rm -rf /usr/local/nginx
  13.         ln -sfv /data/nginx /usr/local/nginx
  14.         echo "Nginx 配置文件初始化完成"
  15. fi
  16. #初始化Apache
  17. if [ -d "/data/apache/" ];then
  18.         echo "nginx 目录不为空,自动使用当前目录数据和配置文件"
  19.         rm -rf /usr/local/apache
  20.         ln -sfv /data/apache /usr/local/apache
  21. else
  22.         mkdir -m 775 -p /data/apache
  23.         cp -a -p /usr/local/apache/* /data/apache
  24.         rm -rf /usr/local/apache
  25.         ln -sfv /data/apache /usr/local/apache
  26.         echo "Apache 配置文件初始化完成"
  27. fi
  28. #初始化Mariadb
  29. if [ -d "/data/mariadb/" ];then
  30.         echo "Apache 目录不为空,自动使用当前目录数据和配置文件"
  31.         rm -rf /usr/local/apache
  32.         ln -sfv /data/mariadb /usr/local/mariadb
  33. else
  34.         mkdir -m 775 -p /data/mariadb
  35.         cp -a -p /usr/local/mariadb/* /data/mariadb
  36.         rm -rf /usr/local/mariadb
  37.         ln -sfv /data/mariadb /usr/local/mariadb
  38.         echo "Mriadb 配置文件初始化完成"
  39. fi
  40. #初始化PHP
  41. if [ -d "/data/php/" ];then
  42.         echo "php 目录不为空,自动使用当前目录数据和配置文件"
  43.         rm -rf /usr/local/apache
  44.         ln -sfv /data/apache /usr/local/apache
  45. els
  46.         mkdir -m 775 -p /data/php
  47.         cp -a -p /usr/local/php/* /data/php
  48.         rm -rf /usr/local/php
  49.         ln -sfv /data/php /usr/local/php
  50.         echo "PHP 配置文件初始化完成"
  51. fi
  52. #初始化Redis
  53. if [ -d "/data/redis/" ];then
  54.         echo "redis 目录不为空,自动使用当前目录数据和配置文件"
  55.         rm -rf /usr/local/redis
  56.         ln -sfv /data/redis /usr/local/redis
  57. else
  58.         mkdir -m 775 -p /data/redis
  59.         cp -a -p /usr/local/redis/* /data/redis
  60.         rm -rf /usr/local/redis
  61.         ln -sfv /data/redis /usr/local/redis
  62.         echo "Redis 配置文件初始化完成"
  63. fi
  64. if [ -d "/data/wwwroot/" ];then
  65.         echo "wwwroot 目录不为空,自动使用当前目录数据和配置文件"
  66.         rm -rf /home/wwwroot
  67.         ln -sfv /data/wwwroot /home/wwwroot
  68. else
  69.         mkdir -m 775 -p /data/wwwroot
  70.         chown -R www:www /data/wwwroot
  71.         cp -a -p /home/wwwroot/* /data/wwwroot
  72.         rm -rf /home/wwwroot
  73.         ln -sfv /data/wwwroot /home/wwwroot
  74.         echo "wwwroot 网站根目录配置文件初始化完成"
  75. fi
  76. ln -sfv /usr/bin/run-lnmpa /data/run-lnmpa
  77. lnmp restart >> /data/lnmp.log
  78. /bin/bash
  79. echo "已完成初始化,所有配置文件和数据均使用挂载卷中相关目录,请注意备份!!!"
复制代码








补充内容 (2019-12-17 16:13):
该镜像需要在启动的时候挂载一个数据目录到容器的/data目录
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2019-12-31 16:20:39 | 显示全部楼层


你好我参照你的dockerfile和脚本,做了一个lnmp镜像,可能对你有帮助:
参考链接: http://www.zhangqiongjie.com/2343.html
我只做的docker镜像大小是1.85G
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2024-9-22 01:49 , Processed in 0.025619 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表