当前位置:   article > 正文

Docker-Compose编排LNMP并部署WordPress_使用docker-compose容器编排服务搭建wordpress

使用docker-compose容器编排服务搭建wordpress

前言

随着云计算和容器化技术的快速发展,使用 Docker Compose 编排 LNMP 环境已经成为快速部署 Web 应用程序的一种流行方式。LNMP 环境由 Linux、Nginx、MySQL 和 PHP 组成,为运行 Web 应用提供了稳定的基础。本文将介绍如何通过 Docker Compose 编排 LNMP 环境,并利用该环境顺利完成 WordPress 的部署和配置。

编写 Dockerfile 部署 LNMP 请参考:Docker构建LNMP部署WordPress-CSDN博客

目录

一、docker-compose 编排 lnmp

1. 环境准备

2. 准备 mysql 容器目录及相关文件

2.1 进入工作目录

2.2 编写 Dockerfile 文件

2.3 准备 my.cnf 文件

3. 准备 php 容器目录及相关文件

3.1 进入工作目录

3.2 编写 Dockerfile 文件

3.3 准备 php.ini、php-fpm.conf、www.conf 配置文件

3.3.1 php.ini

3.3.2 php-fpm.conf

3.3.3 www.conf

4. 编辑 docker-compose.yml 文件

5. 下载 Docker Compose 并安装

6. 查看工作目录清理历史数据

7. 启动服务

8. 进入容器登录 mysql 授权

9. 创建一个新的配置文件 wp-config.php

10. 浏览器访问 wordpress

二、错误总结

1. php 无法获取指定镜像

2. 建议保证 nginx、mysql 服务优先启动于 php

3. 访问 wordpress/index.php 提示 File not found.

4. yum 安装依赖包失败

5. 其他建议


一、docker-compose 编排 lnmp

1. 环境准备

容器名宿主机系统/配置IP地址Docker版本基于镜像安装软件
nginxCentos 7.4;8C/8G172.19.8.1020.10.17centos:7Docker-NginxDocker-Wordpress
mysqlCentos 7.4;8C/8G172.19.8.2020.10.17centos:7Docker-Mysql
phpCentos 7.4;8C/8G172.19.8.3020.10.17centos:7Docker-php

nginx 容器构建请参考:Docker部署nginx并启用https加密连接-CSDN博客 

2. 准备 mysql 容器目录及相关文件

2.1 进入工作目录

  1. [root@localhost ~]# cd /lnmp/
  2. [root@localhost lnmp]# mkdir mysql
  3. [root@localhost lnmp]# cd mysql/
  4. [root@localhost mysql]# ls
  5. mysql-boost-5.7.20.tar.gz # 准备安装包

2.2 编写 Dockerfile 文件

  1. [root@localhost mysql]# vim Dockerfile
  2. FROM centos:7
  3. MAINTAINER mysql image <fql>
  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/ # 将MySQL源代码包解压缩到镜像/usr/local/src/目录下
  6. WORKDIR /usr/local/src/mysql-5.7.20/ # 设置工作目录为MySQL源代码包的目录
  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 8 && make install
  21. ADD my.cnf /etc/
  22. ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH # 将MySQL的可执行文件路径添加到环境变量中
  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 \ # 运行MySQL的初始化命令,初始化MySQL数据库
  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"] # 启动MySQL数据库服务

2.3 准备 my.cnf 文件

  1. [root@localhost mysql]# cat my.cnf
  2. [client]
  3. port = 3306
  4. socket=/usr/local/mysql/mysql.sock
  5. [mysql]
  6. port = 3306
  7. socket = /usr/local/mysql/mysql.sock
  8. auto-rehash
  9. [mysqld]
  10. user = mysql
  11. basedir=/usr/local/mysql
  12. datadir=/usr/local/mysql/data
  13. port = 3306
  14. character-set-server=utf8
  15. pid-file = /usr/local/mysql/mysqld.pid
  16. socket=/usr/local/mysql/mysql.sock
  17. bind-address = 0.0.0.0
  18. skip-name-resolve
  19. max_connections=2048
  20. default-storage-engine=INNODB
  21. max_allowed_packet=16M
  22. server-id = 1
  23. 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

3. 准备 php 容器目录及相关文件

3.1 进入工作目录

  1. [root@localhost mysql]# cd ..
  2. [root@localhost lnmp]# mkdir php
  3. [root@localhost lnmp]# cd php/
  4. [root@localhost php]# ls
  5. php-7.1.10.tar.bz2 # 准备安装包

3.2 编写 Dockerfile 文件

  1. [root@localhost php]# vim Dockerfile
  2. FROM centos:7
  3. MAINTAINER php image <fql>
  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/ # 将php文件解压并复制到/usr/local/src/目录下
  15. WORKDIR /usr/local/src/php-7.1.10 # 设置工作目录
  16. RUN ./configure \ # 配置PHP编译选项
  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 -j 8 && make install
  35. ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH # 将PHP可执行文件路径添加到系统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 # 暴露容器的9000端口,用于PHP-FPM服务
  40. ENTRYPOINT [ "/usr/local/php/sbin/php-fpm", "-F" ] # 启动PHP-FPM服务并以守护进程方式运行

3.3 准备 php.ini、php-fpm.conf、www.conf 配置文件

3.3.1 php.ini
  1. [root@localhost php]# vim php.ini
  2. 939 date.timezone = Asia/Shanghai # 取消注释,修改
  3. 1170 mysqli.default_socket = /usr/local/mysql/mysql.sock
  4. # MySQL数据库的默认socket文件路径,用于PHP连接MySQL数据库时寻找MySQL服务器的通信端口
  5. [root@localhost php]# egrep -v "^;" php.ini | egrep -v "^$"
  6. # 显示php.ini文件中的非注释和非空行内容,即显示出配置文件中的有效配置项
  7. [PHP]
  8. engine = On
  9. short_open_tag = Off
  10. precision = 14
  11. output_buffering = 4096
  12. zlib.output_compression = Off
  13. implicit_flush = Off
  14. unserialize_callback_func =
  15. serialize_precision = -1
  16. disable_functions =
  17. disable_classes =
  18. zend.enable_gc = On
  19. expose_php = On
  20. max_execution_time = 30
  21. max_input_time = 60
  22. memory_limit = 128M
  23. error_reporting = E_ALL
  24. display_errors = On
  25. display_startup_errors = On
  26. log_errors = On
  27. log_errors_max_len = 1024
  28. ignore_repeated_errors = Off
  29. ignore_repeated_source = Off
  30. report_memleaks = On
  31. track_errors = On
  32. html_errors = On
  33. variables_order = "GPCS"
  34. request_order = "GP"
  35. register_argc_argv = Off
  36. auto_globals_jit = On
  37. post_max_size = 8M
  38. auto_prepend_file =
  39. auto_append_file =
  40. default_mimetype = "text/html"
  41. default_charset = "UTF-8"
  42. doc_root =
  43. user_dir =
  44. enable_dl = Off
  45. file_uploads = On
  46. upload_max_filesize = 2M
  47. max_file_uploads = 20
  48. allow_url_fopen = On
  49. allow_url_include = Off
  50. default_socket_timeout = 60
  51. [CLI Server]
  52. cli_server.color = On
  53. [Date]
  54. date.timezone = Asia/Shanghai
  55. [filter]
  56. [iconv]
  57. [intl]
  58. [sqlite3]
  59. [Pcre]
  60. [Pdo]
  61. [Pdo_mysql]
  62. pdo_mysql.cache_size = 2000
  63. pdo_mysql.default_socket=
  64. [Phar]
  65. [mail function]
  66. SMTP = localhost
  67. smtp_port = 25
  68. mail.add_x_header = On
  69. [SQL]
  70. sql.safe_mode = Off
  71. [ODBC]
  72. odbc.allow_persistent = On
  73. odbc.check_persistent = On
  74. odbc.max_persistent = -1
  75. odbc.max_links = -1
  76. odbc.defaultlrl = 4096
  77. odbc.defaultbinmode = 1
  78. [Interbase]
  79. ibase.allow_persistent = 1
  80. ibase.max_persistent = -1
  81. ibase.max_links = -1
  82. ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
  83. ibase.dateformat = "%Y-%m-%d"
  84. ibase.timeformat = "%H:%M:%S"
  85. [MySQLi]
  86. mysqli.max_persistent = -1
  87. mysqli.allow_persistent = On
  88. mysqli.max_links = -1
  89. mysqli.cache_size = 2000
  90. mysqli.default_port = 3306
  91. mysqli.default_socket = /usr/local/mysql/mysql.sock
  92. mysqli.default_host =
  93. mysqli.default_user =
  94. mysqli.default_pw =
  95. mysqli.reconnect = Off
  96. [mysqlnd]
  97. mysqlnd.collect_statistics = On
  98. mysqlnd.collect_memory_statistics = On
  99. [OCI8]
  100. [PostgreSQL]
  101. pgsql.allow_persistent = On
  102. pgsql.auto_reset_persistent = Off
  103. pgsql.max_persistent = -1
  104. pgsql.max_links = -1
  105. pgsql.ignore_notice = 0
  106. pgsql.log_notice = 0
  107. [bcmath]
  108. bcmath.scale = 0
  109. [browscap]
  110. [Session]
  111. session.save_handler = files
  112. session.use_strict_mode = 0
  113. session.use_cookies = 1
  114. session.use_only_cookies = 1
  115. session.name = PHPSESSID
  116. session.auto_start = 0
  117. session.cookie_lifetime = 0
  118. session.cookie_path = /
  119. session.cookie_domain =
  120. session.cookie_httponly =
  121. session.serialize_handler = php
  122. session.gc_probability = 1
  123. session.gc_divisor = 1000
  124. session.gc_maxlifetime = 1440
  125. session.referer_check =
  126. session.cache_limiter = nocache
  127. session.cache_expire = 180
  128. session.use_trans_sid = 0
  129. session.sid_length = 26
  130. session.trans_sid_tags = "a=href,area=href,frame=src,form="
  131. session.sid_bits_per_character = 5
  132. [Assertion]
  133. zend.assertions = 1
  134. [COM]
  135. [mbstring]
  136. [gd]
  137. [exif]
  138. [Tidy]
  139. tidy.clean_output = Off
  140. [soap]
  141. soap.wsdl_cache_enabled=1
  142. soap.wsdl_cache_dir="/tmp"
  143. soap.wsdl_cache_ttl=86400
  144. soap.wsdl_cache_limit = 5
  145. [sysvshm]
  146. [ldap]
  147. ldap.max_links = -1
  148. [mcrypt]
  149. [dba]
  150. [opcache]
  151. [curl]
  152. [openssl]
3.3.2 php-fpm.conf
  1. [root@localhost php]# vim php-fpm.conf
  2. 17 pid = run/php-fpm.pid # 删除注释符号“;”
  3. [root@localhost php]# egrep -v "^;" php-fpm.conf | egrep -v "^$"
  4. [global]
  5. pid = run/php-fpm.pid
  6. include=/usr/local/php/etc/php-fpm.d/*.conf
3.3.3 www.conf
  1. [root@localhost php]# vim www.conf
  2. 23 user = nginx
  3. 24 group = nginx
  4. 36 listen = 172.19.0.30:9000 # 修改监听IP和端口为容器IP:9000端口
  5. [root@localhost php]# egrep -v "^;" www.conf | egrep -v "^$"
  6. [www]
  7. user = nginx
  8. group = nginx
  9. listen = 172.19.0.30:9000
  10. listen.allowed_clients = 127.0.0.1,172.19.0.10
  11. pm = dynamic
  12. pm.max_children = 5
  13. pm.start_servers = 2
  14. pm.min_spare_servers = 1
  15. pm.max_spare_servers = 3

4. 编辑 docker-compose.yml 文件

  1. [root@localhost php]# cd ..
  2. [root@localhost lnmp]# ls
  3. mysql nginx php
  4. [root@localhost lnmp]# vim docker-compose.yml
  5. version: '2'
  6. services:
  7. nginx:
  8. container_name: nginx01 # 指定容器的名称为nginx01
  9. hostname: nginx-host # 容器的主机名为nginx-host
  10. image: nginx:lnmp # 使用的镜像为nginx:lnmp
  11. build: # 构建上下文和Dockerfile的位置
  12. context: ./nginx
  13. dockerfile: Dockerfile
  14. ports: # 将宿主机的80端口映射到容器的80端口,将宿主机的443端口映射到容器的443端口
  15. - 80:80
  16. - 443:443
  17. volumes: # 将/usr/local/nginx/html目录设为共享挂载点
  18. - /usr/local/nginx/html
  19. networks: # 将该服务连接到名为lnmp的网络,并指定了容器的IPv4地址
  20. lnmp:
  21. ipv4_address: 172.19.0.10
  22. mysql:
  23. container_name: mysql01 # 容器的名称为mysql01
  24. hostname: mysql-host # 容器的主机名为mysql-host
  25. image: mysql:lnmp # 使用的镜像为mysql:lnmp
  26. privileged: true # 使容器内的root拥有真正的root权限
  27. build: # 构建上下文和Dockerfile的位置
  28. context: ./mysql
  29. dockerfile: Dockerfile
  30. ports: # 将宿主机的3306端口映射到容器的3306端口
  31. - 3306:3306
  32. volumes: # 创建容器共享挂载目录/usr/local/mysql
  33. - /usr/local/mysql
  34. networks:
  35. lnmp:
  36. ipv4_address: 172.19.0.20
  37. php:
  38. container_name: php # 容器的名称为php
  39. hostname: php-host # 容器的主机名为php-host
  40. image: php:lnmp # 使用的镜像为php:lnmp
  41. build: # 指定了构建上下文和Dockerfile的位置
  42. context: ./php
  43. dockerfile: Dockerfile
  44. ports: # 将宿主机的9000端口映射到容器的9000端口
  45. - 9000:9000
  46. depends_on: # 声明了该服务依赖于nginx和mysql服务
  47. - nginx
  48. - mysql
  49. volumes_from: # 从nginx和mysql服务中挂载卷
  50. - nginx
  51. - mysql
  52. networks:
  53. lnmp:
  54. ipv4_address: 172.19.0.30
  55. networks: # 定义了一个叫做lnmp的网络,使用了bridge驱动
  56. lnmp:
  57. driver: bridge
  58. ipam:
  59. config: # 指定了IP地址池的子网范围
  60. - subnet: 172.19.0.0/16

5. 下载 Docker Compose 并安装

  1. [root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  2. # `uname -s`-`uname -m`也可以写成$(uname -s) 和 $(uname -m):分别会自动替换为你的系统类型(如:Linux)和机器架构(如:x86_64),确保你下载的是适合你系统的版本。
  3. # curl -L:这部分表示使用curl命令进行下载,并且使用-L参数来跟随重定向
  4. # -o /usr/local/bin/docker-compose: 表示将下载的文件保存为/usr/local/bin目录下的docker-compose文件
  5. [root@localhost bin]# pwd
  6. /usr/local/bin
  7. [root@localhost bin]# ls
  8. docker-compose
  9. [root@localhost bin]# chmod +x /usr/local/bin/docker-compose
  10. [root@localhost bin]# ll
  11. 总用量 10616
  12. -rwxr-xr-x. 1 root root 10867152 53 16:34 docker-compose
  13. [root@localhost bin]# docker-compose --version # 查看版本
  14. docker-compose version 1.21.1, build 5a3f1a3

6. 查看工作目录清理历史数据

  1. [root@localhost lnmp]# tree -L 3
  2. .
  3. ├── docker-compose.yml
  4. ├── mysql
  5. │   ├── Dockerfile
  6. │   ├── my.cnf
  7. │   └── mysql-boost-5.7.20.tar.gz
  8. ├── nginx
  9. │   ├── cert
  10. │   │   ├── ca-key.pem
  11. │   │   ├── ca.pem
  12. │   │   ├── ca.srl
  13. │   │   ├── server-cert.pem
  14. │   │   ├── server.csr
  15. │   │   └── server-key.pem
  16. │   ├── Dockerfile
  17. │   ├── html
  18. │   │   ├── index.html
  19. │   │   └── wordpress
  20. │   ├── nginx-1.24.0.tar.gz
  21. │   ├── nginx.conf
  22. │   └── wordpress-4.9.4-zh_CN.tar.gz
  23. └── php
  24. ├── Dockerfile
  25. ├── php-7.1.10.tar.bz2
  26. ├── php-fpm.conf
  27. ├── php.ini
  28. └── www.conf
  29. # 删除原镜像、容器、网络、数据卷:docker-compose -f docker-compose-yml down
  30. 建议单独删,别把有用的文件一块删了:
  31. [root@localhost ~]# docker images
  32. REPOSITORY TAG IMAGE ID CREATED SIZE
  33. nginx centos a5f6eea7f002 6 hours ago 623MB
  34. nginx latest 7383c266ef25 9 days ago 188MB
  35. centos 7 eeb6ee3f44bd 2 years ago 204MB
  36. [root@localhost ~]# docker ps -a
  37. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  38. dca9b540b422 nginx:centos "/usr/local/nginx/sb…" 6 hours ago Up 6 hours 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp n1
  39. [root@localhost ~]# docker rm -f dca9b540b422
  40. dca9b540b422
  41. [root@localhost ~]# docker rmi -f a5f6eea7f002
  42. [root@localhost ~]# iptables -F
  43. [root@localhost ~]# systemctl restart docker
  44. [root@localhost ~]# systemctl restart network

7. 启动服务

  1. [root@localhost ~]# cd /lnmp/
  2. [root@localhost lnmp]# ls
  3. docker-compose.yml mysql nginx php
  4. [root@localhost lnmp]# docker-compose -f docker-compose.yml up -d
  5. Creating mysql01 ... done
  6. Creating nginx01 ... done
  7. Creating php ... done
  8. [root@localhost lnmp]# docker images
  9. REPOSITORY TAG IMAGE ID CREATED SIZE
  10. php lnmp 2c776b3060db About a minute ago 1.41GB
  11. mysql lnmp 291e964e74d3 8 minutes ago 10.1GB
  12. nginx lnmp dc1695c1c244 26 minutes ago 651MB
  13. nginx latest 7383c266ef25 9 days ago 188MB
  14. centos 7 eeb6ee3f44bd 2 years ago 204MB
  15. [root@localhost lnmp]# docker ps -a
  16. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  17. 2e2c69e85e86 php:lnmp "/usr/local/php/sbin…" 15 seconds ago Up 14 seconds 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp php
  18. bd45ba2ccaeb mysql:lnmp "/usr/local/mysql/bi…" 23 seconds ago Up 15 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp mysql01
  19. 6dc9248104d1 nginx:lnmp "/usr/local/nginx/sb…" 23 seconds ago Up 15 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx01

8. 进入容器登录 mysql 授权

  1. [root@localhost lnmp]# docker exec -it mysql01 /bin/bash
  2. [root@mysql-host mysql-5.7.20]# mysql
  3. mysql> create database wordpress;
  4. mysql> grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
  5. mysql> grant all privileges on *.* to 'root'@'%' identified by 'abc123';
  6. mysql> flush privileges;
  7. mysql> exit
  8. Bye
  9. [root@mysql-host mysql-5.7.20]# exit

9. 创建一个新的配置文件 wp-config.php

  1. [root@localhost lnmp]# cd /lnmp/nginx/html/wordpress
  2. [root@localhost wordpress]# ls
  3. index.php wp-admin wp-content wp-load.php wp-signup.php
  4. license.txt wp-blog-header.php wp-cron.php wp-login.php wp-trackback.php
  5. readme.html wp-comments-post.php wp-includes wp-mail.php xmlrpc.php
  6. wp-activate.php wp-config-sample.php wp-links-opml.php wp-settings.php
  7. [root@localhost wordpress]# cp wp-config-sample.php wp-config.php
  8. [root@localhost wordpress]# vim wp-config.php
  9. /** WordPress数据库的名称 */
  10. define('DB_NAME', 'wordpress');
  11. /** MySQL数据库用户名 */
  12. define('DB_USER', 'wordpress');
  13. /** MySQL数据库密码 */
  14. define('DB_PASSWORD', '123456');
  15. # 修改WordPress数据库信息

10. 浏览器访问 wordpress

 访问http://192.168.190.108/wordpress/index.php

二、错误总结

1. php 无法获取指定镜像

  1. WARNING: Image for service mysql was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
  2. Pulling php (php:lnmp)...
  3. ERROR: manifest for php:lnmp not found: manifest unknown: manifest unknown
  4. [root@localhost lnmp]# docker ps
  5. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

排错:检查docker-compose.yml文件

  1. build: # 指定了构建上下文和Dockerfile的位置
  2. context: ./php
  3. dockerfile: Dockerfile
  4. 原因是缺少build

2. 建议保证 nginx、mysql 服务优先启动于 php

  1. depends_on: # 声明了该服务依赖于nginx和mysql服务
  2. - nginx
  3. - mysql

3. 访问 wordpress/index.php 提示 File not found.

① 查看 Dockerfile 指定映射路径是否正确,一开始路径写成yum安装的share了

② 查看 Dockerfile 指定映射路径权限问题,777没毛病

③ 另外:最坑的

  1. ADD html/ /usr/local/nginx/html/
  2. 居然不能把本地的 html/里面内容 拷贝到容器/usr/local/nginx/html/
  3. COPY html/ /usr/local/nginx/html/
  4. 尝试了修改为COPY;或者尝试直接ADD解压压缩包到容器;或者尝试在compose里面加values
  5. volumes: # 将本地目录./lnmp/nginx/html/挂载到容器内的/usr/local/nginx/html目录
  6. - ./lnmp/nginx/html/:/usr/local/nginx/html
  7. 最后发现Dockerfile与composed定义的有冲突,修改为
  8. - /usr/local/nginx/html

4. yum 安装依赖包失败

  1. Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container error was
  2. 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"
  3. yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. yum makecache
  5. # 如果遇到类似dns问题,可修改dns、替换阿里源尝试解决
  6. vim /etc/sysctl.conf
  7. net.ipv4.ip_forward=1
  8. sysctl -p
  9. systemctl restart network
  10. systemctl restart docker

5. 其他建议

  • 建议多核编译,提高效率
  • 出现故障可分开排查,比如nginx有问题,可以删掉compose其他容器服务配置,单独检查,避免多次编译
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/829073?site
推荐阅读
相关标签
  

闽ICP备14008679号