当前位置:   article > 正文

基于Docker-compose搭建LNMP_dockercompose安装lnmp

dockercompose安装lnmp

1、配置nginx

  • 创建nginx目录
  • 上传所需压缩包
  • 将wordress解压到指定路径下

  • 配置Dockerfile文本文件
  1. vim Dockerfile
  2. FROM centos:7
  3. MAINTAINER this is nginx image <zgc>
  4. RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
  5. RUN useradd -M -s /sbin/nologin nginx
  6. ADD nginx-1.12.0.tar.gz /usr/local/src
  7. WORKDIR /usr/local/src/nginx-1.12.0
  8. RUN ./configure \
  9. --prefix=/usr/local/nginx \
  10. --user=nginx \
  11. --group=nginx \
  12. --with-http_stub_status_module && make && make install
  13. ENV PATH /usr/local/nginx/sbin:$PATH
  14. ADD nginx.conf /usr/local/nginx/conf/
  15. ADD html /usr/local/nginx/
  16. RUN chmod 777 -R /usr/local/nginx/html
  17. EXPOSE 80
  18. EXPOSE 443
  19. ENTRYPOINT [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]

  • 配置nginx.conf文件
  1. worker_processes 1;
  2. events {
  3. worker_connections 1024;
  4. }
  5. http {
  6. include mime.types;
  7. default_type application/octet-stream;
  8. sendfile on;
  9. keepalive_timeout 65;
  10. server {
  11. listen 80;
  12. server_name localhost;
  13. charset utf-8;
  14. location / {
  15. root html;
  16. index index.html index.php;
  17. }
  18. error_page 500 502 503 504 /50x.html;
  19. location = /50x.html {
  20. root html;
  21. }
  22. location ~ \.php$ { #当访问以.php结尾的URL时,会连接到172.18.0.30的ip地址上
  23. root html;
  24. fastcgi_pass 172.18.0.30:9000;
  25. fastcgi_index index.php;
  26. fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
  27. include fastcgi_params;
  28. }
  29. }
  30. }
  • nginx相关文件

2、配置mysql

  • 创建mysql目录
  • 上传所需压缩包
  • 配置my.cnf文件
  1. vim /opt/my.cnf
  2. [client]
  3. port = 3306
  4. default-character-set=utf8
  5. socket=/usr/local/mysql/mysql.sock
  6. [mysql]
  7. port = 3306
  8. default-character-set=utf8
  9. socket=/usr/local/mysql/mysql.sock
  10. auto-rehash
  11. [mysqld]
  12. user = mysql
  13. basedir=/usr/local/mysql
  14. datadir=/usr/local/mysql/data
  15. port = 3306
  16. character-set-server=utf8
  17. pid-file = /usr/local/mysql/mysqld.pid
  18. socket=/usr/local/mysql/mysql.sock
  19. bind-address = 0.0.0.0
  20. skip-name-resolve
  21. max_connections=2048
  22. default-storage-engine=INNODB
  23. max_allowed_packet=16M
  24. server-id = 1
  25. sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

  • 配置Dockerfile文本文件
  1. vim Dockerfile
  2. FROM centos:7
  3. MAINTAINER this is mysql image <wl>
  4. RUN yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake make
  5. ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
  6. WORKDIR /usr/local/src/mysql-5.7.20/
  7. RUN cmake \
  8. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  9. -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
  10. -DSYSCONFDIR=/etc \
  11. -DSYSTEMD_PID_DIR=/usr/local/mysql \
  12. -DDEFAULT_CHARSET=utf8 \
  13. -DDEFAULT_COLLATION=utf8_general_ci \
  14. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  15. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  16. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  17. -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
  18. -DMYSQL_DATADIR=/usr/local/mysql/data \
  19. -DWITH_BOOST=boost \
  20. -DWITH_SYSTEMD=1 && make -j 4 && make install
  21. ADD my.cnf /etc/
  22. ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
  23. RUN useradd -M -s /sbin/nologin mysql
  24. RUN chown mysql:mysql /etc/my.cnf
  25. RUN chown -R mysql:mysql /usr/local/mysql/
  26. RUN /usr/local/mysql/bin/mysqld \
  27. --initialize-insecure \
  28. --user=mysql \
  29. --basedir=/usr/local/mysql \
  30. --datadir=/usr/local/mysql/data
  31. EXPOSE 3306
  32. CMD ["/usr/local/mysql/bin/mysqld"]

3、配置php

  • 创建php目录
  • 上传php压缩包

  • 配置Dockerfile文本文件
  1. vim Dockerfile
  2. FROM centos:7
  3. MAINTAINER this is php image <wl>
  4. RUN yum -y install gd \
  5. libjpeg libjpeg-devel \
  6. libpng libpng-devel \
  7. freetype freetype-devel \
  8. libxml2 libxml2-devel \
  9. zlib zlib-devel \
  10. curl curl-devel \
  11. openssl openssl-devel \
  12. gcc gcc-c++ make pcre-devel
  13. RUN useradd -M -s /sbin/nologin nginx
  14. ADD php-7.1.10.tar.bz2 /usr/local/src/
  15. WORKDIR /usr/local/src/php-7.1.10
  16. RUN ./configure \
  17. --prefix=/usr/local/php \
  18. --with-mysql-sock=/usr/local/mysql/mysql.sock \
  19. --with-mysqli \
  20. --with-zlib \
  21. --with-curl \
  22. --with-gd \
  23. --with-jpeg-dir \
  24. --with-png-dir \
  25. --with-freetype-dir \
  26. --with-openssl \
  27. --enable-fpm \
  28. --enable-mbstring \
  29. --enable-xml \
  30. --enable-session \
  31. --enable-ftp \
  32. --enable-pdo \
  33. --enable-tokenizer \
  34. --enable-zip && make && make install
  35. ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
  36. ADD php.ini /usr/local/php/lib/
  37. ADD php-fpm.conf /usr/local/php/etc/
  38. ADD www.conf /usr/local/php/etc/php-fpm.d/
  39. EXPOSE 9000
  40. ENTRYPOINT [ "/usr/local/php/sbin/php-fpm", "-F" ]

  • 配置php.ini文件 
  1. vim /opt/php/php.ini
  2. [PHP]
  3. engine = On
  4. short_open_tag = Off
  5. precision = 14
  6. output_buffering = 4096
  7. zlib.output_compression = Off
  8. implicit_flush = Off
  9. unserialize_callback_func =
  10. serialize_precision = -1
  11. disable_functions =
  12. disable_classes =
  13. zend.enable_gc = On
  14. expose_php = On
  15. max_execution_time = 30
  16. max_input_time = 60
  17. memory_limit = 128M
  18. error_reporting = E_ALL
  19. display_errors = On
  20. display_startup_errors = On
  21. log_errors = On
  22. log_errors_max_len = 1024
  23. ignore_repeated_errors = Off
  24. ignore_repeated_source = Off
  25. report_memleaks = On
  26. track_errors = On
  27. html_errors = On
  28. variables_order = "GPCS"
  29. request_order = "GP"
  30. register_argc_argv = Off
  31. auto_globals_jit = On
  32. post_max_size = 8M
  33. auto_prepend_file =
  34. auto_append_file =
  35. default_mimetype = "text/html"
  36. default_charset = "UTF-8"
  37. doc_root =
  38. user_dir =
  39. enable_dl = Off
  40. file_uploads = On
  41. upload_max_filesize = 2M
  42. max_file_uploads = 20
  43. allow_url_fopen = On
  44. allow_url_include = Off
  45. default_socket_timeout = 60
  46. [CLI Server]
  47. cli_server.color = On
  48. [Date]
  49. date.timezone = Asia/Shanghai
  50. [filter]
  51. [iconv]
  52. [intl]
  53. [sqlite3]
  54. [Pcre]
  55. [Pdo]
  56. [Pdo_mysql]
  57. pdo_mysql.cache_size = 2000
  58. pdo_mysql.default_socket=
  59. [Phar]
  60. [mail function]
  61. SMTP = localhost
  62. smtp_port = 25
  63. mail.add_x_header = On
  64. [SQL]
  65. sql.safe_mode = Off
  66. [ODBC]
  67. odbc.allow_persistent = On
  68. odbc.check_persistent = On
  69. odbc.max_persistent = -1
  70. odbc.max_links = -1
  71. odbc.defaultlrl = 4096
  72. odbc.defaultbinmode = 1
  73. [Interbase]
  74. ibase.allow_persistent = 1
  75. ibase.max_persistent = -1
  76. ibase.max_links = -1
  77. ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
  78. ibase.dateformat = "%Y-%m-%d"
  79. ibase.timeformat = "%H:%M:%S"
  80. [MySQLi]
  81. mysqli.max_persistent = -1
  82. mysqli.allow_persistent = On
  83. mysqli.max_links = -1
  84. mysqli.cache_size = 2000
  85. mysqli.default_port = 3306
  86. mysqli.default_socket = /usr/local/mysql/mysql.sock
  87. mysqli.default_host =
  88. mysqli.default_user =
  89. mysqli.default_pw =
  90. mysqli.reconnect = Off
  91. [mysqlnd]
  92. mysqlnd.collect_statistics = On
  93. mysqlnd.collect_memory_statistics = On
  94. [OCI8]
  95. [PostgreSQL]
  96. pgsql.allow_persistent = On
  97. pgsql.auto_reset_persistent = Off
  98. pgsql.max_persistent = -1
  99. pgsql.max_links = -1
  100. pgsql.ignore_notice = 0
  101. pgsql.log_notice = 0
  102. [bcmath]
  103. bcmath.scale = 0
  104. [browscap]
  105. [Session]
  106. session.save_handler = files
  107. session.use_strict_mode = 0
  108. session.use_cookies = 1
  109. session.use_only_cookies = 1
  110. session.name = PHPSESSID
  111. session.auto_start = 0
  112. session.cookie_lifetime = 0
  113. session.cookie_path = /
  114. session.cookie_domain =
  115. session.cookie_httponly =
  116. session.serialize_handler = php
  117. session.gc_probability = 1
  118. session.gc_divisor = 1000
  119. session.gc_maxlifetime = 1440
  120. session.referer_check =
  121. session.cache_limiter = nocache
  122. session.cache_expire = 180
  123. session.use_trans_sid = 0
  124. session.sid_length = 26
  125. session.trans_sid_tags = "a=href,area=href,frame=src,form="
  126. session.sid_bits_per_character = 5
  127. [Assertion]
  128. zend.assertions = 1
  129. [COM]
  130. [mbstring]
  131. [gd]
  132. [exif]
  133. [Tidy]
  134. tidy.clean_output = Off
  135. [soap]
  136. soap.wsdl_cache_enabled=1
  137. soap.wsdl_cache_dir="/tmp"
  138. soap.wsdl_cache_ttl=86400
  139. soap.wsdl_cache_limit = 5
  140. [sysvshm]
  141. [ldap]
  142. ldap.max_links = -1
  143. [mcrypt]
  144. [dba]
  145. [opcache]
  146. [curl]
  147. [openssl]
  • 配置php-fpm.conf文件

  1. vim /opt/php/php-fpm.conf
  2. [global]
  3. pid = run/php-fpm.pid
  4. include=/usr/local/php/etc/php-fpm.d/*.conf
  • 配置www.conf文件 
  1. vim /opt/php/www.conf
  2. [www]
  3. user = nginx
  4. group = nginx
  5. listen = 172.18.0.30:9000
  6. pm = dynamic
  7. pm.max_children = 5
  8. pm.start_servers = 2
  9. pm.min_spare_servers = 1
  10. pm.max_spare_servers = 3

4、创建compose

  •  创建compose_lnmp目录,并将上述创建的服务cp至目录下

  •  配置docker-compose.yml文件
  1. #定义docker-compose版本,可以是2 或 3
  2. version: '3'
  3. #使用services定义服务
  4. services:
  5. #第一个service
  6. nginx:
  7. #设置容器名
  8. container_name: nginx
  9. #使用dockerfile来构建镜像
  10. build:
  11. #指定Dockerfile文件所在位置
  12. context: ./nginx
  13. #指定文件名
  14. dockerfile: Dockerfile
  15. #映射端口
  16. ports:
  17. - 80:80
  18. - 443:443
  19. #设置数据卷挂载
  20. volumes:
  21. - ./nginx/html:/usr/local/nginx/html
  22. #加入网络
  23. networks:
  24. lnmp:
  25. ipv4_address: 172.18.0.10
  26. mysql:
  27. container_name: mysql
  28. build:
  29. context: ./mysql
  30. dockerfile: Dockerfile
  31. ports:
  32. - 3306:3306
  33. networks:
  34. lnmp:
  35. ipv4_address: 172.18.0.20
  36. volumes:
  37. - db-data:/usr/local/mysql
  38. privileged: true
  39. php:
  40. container_name: php
  41. build:
  42. context: ./php
  43. dockerfile: Dockerfile
  44. ports:
  45. - 9000:9000
  46. networks:
  47. lnmp:
  48. ipv4_address: 172.18.0.30
  49. volumes:
  50. - db-data:/usr/local/mysql
  51. - ./nginx/html:/usr/local/nginx/html
  52. depends_on:
  53. - nginx
  54. - mysql
  55. #设置网络为自定义网络
  56. networks:
  57. lnmp:
  58. driver: bridge
  59. ipam:
  60. config:
  61. - subnet: 172.18.0.0/16
  62. volumes:

  • 创建所需挂载目录 

  •  构建镜像
docker-compose -f docker-compose.yml up -d

  • 验证:访问192.168.247.70/wordpress/wp-admin/setup-config.php 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/829145
推荐阅读
相关标签
  

闽ICP备14008679号