工作目录: /home/{username}/dockers/lamp

将docker容器的apache的80 映射为本地主机的81

  1. # sudo docker pull mattrayner/lamp
  2. git clone https://github.com/wakasann/docker-lamp.git
  3. cd docker-lamp
  4. # Build the 18.04 image
  5. docker build -t=wakasann/lamp:latest -f ./1804/Dockerfile .
  6. mkdir -p ~/dockers/lamp/{app,mysql}
  7. cd ~/dockers/lamp
  8. # Launch a 18.04 based image
  9. # 容器需手动启动
  10. sudo docker run --name lamptest -p "80:80" -p "3306:3306" -p "443:443" -v ${PWD}/app:/app -v ${PWD}/mysql:/var/lib/mysql wakasann/lamp:latest
  11. # 容器自启动
  12. sudo docker run --restart=always --name lamptest -p "80:80" -p "3306:3306" -p "443:443" -v ${PWD}/app:/app -v ${PWD}/mysql:/var/lib/mysql wakasann/lamp:latest

--restart=always 参数的值always 是容器停止之后,会进行重新启动

php 7.3

运行日志:

  1. vagrant@vagrant:~/dockers/lamp$ sudo docker run --name lamptest -p "81:80" -p "3306:3306" -v ${PWD}/app:/app -v ${PWD}/mysql:/var/lib/mysql mattrayner/lamp:latest-1804
  2. sed: can't read /etc/php/7.2/apache2/php.ini: No such file or directory
  3. rm: cannot remove '/var/run/mysqld/mysqld.sock': No such file or directory
  4. => An empty or uninitialized MySQL volume is detected in /var/lib/mysql
  5. => Installing MySQL ...
  6. => Done!
  7. => Waiting for confirmation of MySQL service startup
  8. => Creating MySQL admin user with random password
  9. ERROR 1133 (42000) at line 1: Can't find any matching row in the user table
  10. => Done!
  11. ========================================================================
  12. You can now connect to this MySQL Server with YDvRU5FwZf2n
  13. mysql -uadmin -pYDvRU5FwZf2n -h<host> -P<port>
  14. Please remember to change the above password as soon as possible!
  15. MySQL user 'root' has no password but only allows local connections
  16. enjoy!
  17. ========================================================================
  18. /usr/lib/python2.7/dist-packages/supervisor/options.py:298: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.
  19. 'Supervisord is running as root and it is searching '
  20. 2019-12-04 02:42:22,994 CRIT Supervisor running as root (no user in config file)
  21. 2019-12-04 02:42:22,995 INFO Included extra file "/etc/supervisor/conf.d/supervisord-apache2.conf" during parsing
  22. 2019-12-04 02:42:22,997 INFO Included extra file "/etc/supervisor/conf.d/supervisord-mysqld.conf" during parsing
  23. 2019-12-04 02:42:23,049 INFO RPC interface 'supervisor' initialized
  24. 2019-12-04 02:42:23,050 CRIT Server 'unix_http_server' running without any HTTP authentication checking
  25. 2019-12-04 02:42:23,050 INFO supervisord started with pid 1
  26. 2019-12-04 02:42:24,053 INFO spawned: 'mysqld' with pid 500
  27. 2019-12-04 02:42:24,059 INFO spawned: 'apache2' with pid 501
  28. 2019-12-04 02:42:25,707 INFO success: mysqld entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
  29. 2019-12-04 02:42:25,708 INFO success: apache2 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

上面会输出 mysql admin用户的密码

fix mcrypt.so at php 7.3

进入docker lamp 容器中

  1. sudo docker exec -ti lamptest /bin/bash

查看 php版本

  1. root@43cdda3f409c:/usr/lib/php/20180731# php -v
  2. PHP Warning: PHP Startup: Unable to load dynamic library 'mcrypt.so' (tried: /usr/lib/php/20180731/mcrypt.so (/usr/lib/php/20180731/mcrypt.so: cannot open shared object file: No such file or directory), /usr/lib/php/20180731/mcrypt.so.so (/usr/lib/php/20180731/mcrypt.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
  3. PHP 7.3.12-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Nov 28 2019 07:37:16) ( NTS )
  4. Copyright (c) 1997-2018 The PHP Group
  5. Zend Engine v3.3.12, Copyright (c) 1998-2018 Zend Technologies
  6. with Zend OPcache v7.3.12-1+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
  7. with Xdebug v2.8.0, Copyright (c) 2002-2019, by Derick Rethans

修复 Unable to load dynamic library 'mcrypt.so' 在 php 7.3

  1. # 验证 php和 pecl的版本
  2. php -v
  3. pecl version

安装 mcrypt 扩展

Mcrypt PECL 扩展

  1. apt-get -y install gcc make autoconf libc-dev pkg-config
  2. apt-get -y install libmcrypt-dev
  3. apt-get install php7.3-dev # 让phpize命令可执行,如果出现phpize: not found需执行这句
  4. pecl install mcrypt

当你看到显示的提示:

  1. libmcrypt prefix? [autodetect] :

按 [Enter] 回车键 来自动选择。

当通过 pecl 安装成功之后,你应该将mcrypt.so 扩展添加到 php.ini

输出的内容像:

  1. ...
  2. Build process completed successfully
  3. Installing '/usr/lib/php/20180731/mcrypt.so'
  4. install ok: channel://pecl.php.net/mcrypt-1.0.3
  5. configuration option "php_ini" is not set to php.ini location
  6. You should add "extension=mcrypt.so" to php.ini

从上面的输出获取到安装的路径,并将其加入到 cli和apache php.ini 配置文件中(因Docker lamp已经执行了这一步,只做备忘)

  1. sudo bash -c "echo extension=/usr/lib/php/20180731/mcrypt.so > /etc/php/7.3/cli/conf.d/mcrypt.ini"
  2. sudo bash -c "echo extension=/usr/lib/php/20180731/mcrypt.so > /etc/php/7.3/apache2/conf.d/mcrypt.ini"

重启apache

  1. service apache2 restart

验证 mcrypt 已经按照成功

  1. $ php -i | grep "mcrypt"
  2. /etc/php/7.3/cli/conf.d/20-mcrypt.ini,
  3. Registered Stream Filters => zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, convert.iconv.*, mcrypt.*, mdecrypt.*
  4. mcrypt
  5. mcrypt support => enabled
  6. mcrypt_filter support => enabled
  7. mcrypt.algorithms_dir => no value => no value
  8. mcrypt.modes_dir => no value => no value

  1. 修改myql sql_mode
  1. #Form lamp docker
  2. vim /etc/mysql/my.cnf
  3. vim /etc/my.cnf

都在文件末尾添加以下内容:

  1. [mysqld]
  2. sql_mode=ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  3. #max_allowed_packet=100M

重启docker lamp容器之后,在 phpmyadmin 中

  1. #phpmyadmin run sql
  2. show variables like 'sql_mode';

临时设置 sql_mode

  1. #phpmyadmin run sql
  2. set global sql_mode='ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
  1. 修正 apache2 默认列出 Indexs
  1. # Form docker
  2. vim /etc/apache2/sites-available/000-default.conf

<Directory /var/www/html>Options Indexes FollowSymLinks MultiViews 改为 Options FollowSymLinks MultiViews(移除 Indexes

按ESC键,输入:wq保存文件修改

  1. # Form docker,restart apache2
  2. service apache2 restart

rsync note

通过ssh的方式,将远程的文件同步到当前服务器的一个文件夹下

将 远程的 /home/vagrant/sh/ 文件放入到本机的/home/vagrant/syncfrom155文件夹中

  1. rsync -v -r -e ssh vagrant@192.168.1.155:/home/vagrant/sh/* /home/vagrant/syncfrom155

补充 docker容器自启动

  1. $ docker run --help
  2. ...
  3. --restart string Restart policy to apply when a container exits (default "no")
  4. ...

显示 docker run 命令的帮助信息

因上面docker 命令启动 lamp 容器时,没有加--restart=always 参数

  1. docker run --restart=always

如果已创建容器并已启动,可通过下面的命令进行添加:

  1. docker update --restart=always <CONTAINER ID>

如果想容器在 docker stop 之后,不想让容器自启动,尝试通过

  1. docker update --restart=no <CONTAINER ID>

References

docker-ce 搭建的 lamp 开发环境笔记的更多相关文章

  1. docker快速搭建php7.2-nginx开发环境

    1.输入命令: docker search -s 100 php 搜索出下面图中列表,选择webdevops/php-nginx. 2.通过docker拉取webdevops/php-nginx镜像, ...

  2. Mac下使用Brew搭建PHP(LNMP/LAMP)开发环境

    Mac下搭建lamp开发环境很容易,有xampp和mamp现成的集成环境.但是集成环境对于经常需要自定义一些配置的开发者来说会非常麻烦,而且Mac本身自带apache和php,在brew的帮助下非常容 ...

  3. Mac下用brew搭建PHP(LNMP/LAMP)开发环境

    Mac下搭建lamp开发环境很容易,有xampp和mamp现成的集成环境.但是集成环境对于经常需要自定义一些配置的开发者来说会非常麻烦,而且Mac本身自带apache和php,在brew的帮助下非常容 ...

  4. ES6 学习笔记 (2)-- Liunx环境安装Node.js 与 搭建 Node.js 开发环境

    笔记参考来源:廖雪峰老师的javascript全栈教程 一.安装Node.js 目前Node.js的最新版本是6.2.x.首先,从Node.js官网下载对应平台的安装程序. 1.下载 选择对应的Liu ...

  5. Ubuntu16.04搭建LAMP开发环境

    Ubuntu16.04搭建LAMP开发环境 虚拟机上安装好Ubuntu16.04后,是一台空白的Ubuntu.我的目的是搭建LAMP环境,顺便搭一个Python Django环境. 基本设置 1.配置 ...

  6. 用 Docker 搭建 ORACLE 数据库开发环境

    用 Docker 搭建 ORACLE 数据库开发环境 需要安装 ORACLE 数据库做开发,直接安装的话因为各类平台的限制,非常复杂,会遇到很多问题. 还好,现在有 Docker 化的部署方式,省去很 ...

  7. 如何通过Docker搭建一个swoft开发环境

    本篇文章给大家分享的内容是关于如何通过Docker搭建一个swoft开发环境 ,内容很详细,有需要的朋友可以参考一下,希望可以帮助到你们. Swoft首个基于 Swoole 原生协程的新时代 PHP ...

  8. Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境

    1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程序员的博客平台 开发者为什么要写作 写作平台 第三方博客平台 自建博客平台 开发论坛 1 ...

  9. 15分钟在笔记本上搭建 Kubernetes + Istio开发环境

    11月13~15日,KubeCon 上海大会召开,云原生是这个秋天最火热的技术.很多同学来问如何上手 Kubernetes和Istio 服务网格开发.本文将帮助你利用Docker CE桌面版,15分钟 ...

随机推荐

  1. pugixml的使用

    VS项目,头文件处鼠标右键,添加“新建筛选器”,重命名为pugixml,把3个文件添加进来.在用到框架的文件中只需#include"pugixml\pugixml.hpp"即可. ...

  2. C#高级编程42章 MVC

    42.1 ASP.NET MVC 路由机制 网络介绍链接 按照传统,在很多Web框架中(如经典的ASP.JSP.PHP.ASP.NET等之类的框架),URL代表的是磁盘上的物理文件.例如,当看到请求h ...

  3. C#调用谷歌翻译API

    原资料为网上找到的原稿为:http://www.cnblogs.com/marso/p/google_translate_api.html(此处只做个人笔记参考) 主要分两块:通过WebRequest ...

  4. JSP页面中<%!%>与<%%>与<%=%>详解

    首先,我们要了解jsp运行原理.JSP的本质就是一个Servlet,JSP的运行之前会先被Tomcat服务器翻译为.java文件,然后在将.java文本编译 为.class文件,而我们在访问jsp时, ...

  5. Ubuntu安装openmpi

    Ubuntu 下安装 openmpi 需要同时安装下面三个包: sudo apt-get install openmpi-bin openmpi-doc libopenmpi-dev 建议更新系统源之 ...

  6. firewall&iptables

    一.firewall 查看firewall状态 firewall-cmd --state 如果firewall为关闭状态,先启动firewall systemctl start firewalld 添 ...

  7. 圆周率Pi是如何计算出来的

    object SparkPi { def main(args: Array[String]) { val spark = SparkSession .builder .appName("Sp ...

  8. Minimal Power of Prime

    题目链接 题意:输入n,求所有质因子幂的最小值.n奇大无比. 思路:先对n所有n开五次方根的质因子约完,然后如果没有除尽的话,因子最多也就4个了,所以幂数大于1的情况有p1^4,p1^3, p1^2  ...

  9. Docker容器数据卷-Volume详解

    Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume).数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享.数据 ...

  10. Xcode 10如何打包ipa包?

    参考: https://www.jianshu.com/p/0421b3fd2470 前置条件 首先导入证书和配置文件 具体操作步骤: product>>Archive 如图所示,选择Di ...