docker-ce 搭建的 lamp 开发环境笔记
工作目录: /home/{username}/dockers/lamp
将docker容器的apache的80 映射为本地主机的81
# sudo docker pull mattrayner/lamp
git clone https://github.com/wakasann/docker-lamp.git
cd docker-lamp
# Build the 18.04 image
docker build -t=wakasann/lamp:latest -f ./1804/Dockerfile .
mkdir -p ~/dockers/lamp/{app,mysql}
cd ~/dockers/lamp
# Launch a 18.04 based image
# 容器需手动启动
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
# 容器自启动
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
运行日志:
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
sed: can't read /etc/php/7.2/apache2/php.ini: No such file or directory
rm: cannot remove '/var/run/mysqld/mysqld.sock': No such file or directory
=> An empty or uninitialized MySQL volume is detected in /var/lib/mysql
=> Installing MySQL ...
=> Done!
=> Waiting for confirmation of MySQL service startup
=> Creating MySQL admin user with random password
ERROR 1133 (42000) at line 1: Can't find any matching row in the user table
=> Done!
========================================================================
You can now connect to this MySQL Server with YDvRU5FwZf2n
mysql -uadmin -pYDvRU5FwZf2n -h<host> -P<port>
Please remember to change the above password as soon as possible!
MySQL user 'root' has no password but only allows local connections
enjoy!
========================================================================
/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.
'Supervisord is running as root and it is searching '
2019-12-04 02:42:22,994 CRIT Supervisor running as root (no user in config file)
2019-12-04 02:42:22,995 INFO Included extra file "/etc/supervisor/conf.d/supervisord-apache2.conf" during parsing
2019-12-04 02:42:22,997 INFO Included extra file "/etc/supervisor/conf.d/supervisord-mysqld.conf" during parsing
2019-12-04 02:42:23,049 INFO RPC interface 'supervisor' initialized
2019-12-04 02:42:23,050 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2019-12-04 02:42:23,050 INFO supervisord started with pid 1
2019-12-04 02:42:24,053 INFO spawned: 'mysqld' with pid 500
2019-12-04 02:42:24,059 INFO spawned: 'apache2' with pid 501
2019-12-04 02:42:25,707 INFO success: mysqld entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
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 容器中
sudo docker exec -ti lamptest /bin/bash
查看 php版本
root@43cdda3f409c:/usr/lib/php/20180731# php -v
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
PHP 7.3.12-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Nov 28 2019 07:37:16) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.12, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.12-1+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
with Xdebug v2.8.0, Copyright (c) 2002-2019, by Derick Rethans
修复 Unable to load dynamic library 'mcrypt.so'
在 php 7.3
# 验证 php和 pecl的版本
php -v
pecl version
安装 mcrypt 扩展
Mcrypt PECL 扩展
apt-get -y install gcc make autoconf libc-dev pkg-config
apt-get -y install libmcrypt-dev
apt-get install php7.3-dev # 让phpize命令可执行,如果出现phpize: not found需执行这句
pecl install mcrypt
当你看到显示的提示:
libmcrypt prefix? [autodetect] :
按 [Enter] 回车键 来自动选择。
当通过 pecl 安装成功之后,你应该将mcrypt.so
扩展添加到 php.ini
输出的内容像:
...
Build process completed successfully
Installing '/usr/lib/php/20180731/mcrypt.so'
install ok: channel://pecl.php.net/mcrypt-1.0.3
configuration option "php_ini" is not set to php.ini location
You should add "extension=mcrypt.so" to php.ini
从上面的输出获取到安装的路径,并将其加入到 cli和apache php.ini 配置文件中(因Docker lamp已经执行了这一步,只做备忘)
sudo bash -c "echo extension=/usr/lib/php/20180731/mcrypt.so > /etc/php/7.3/cli/conf.d/mcrypt.ini"
sudo bash -c "echo extension=/usr/lib/php/20180731/mcrypt.so > /etc/php/7.3/apache2/conf.d/mcrypt.ini"
重启apache
service apache2 restart
验证 mcrypt 已经按照成功
$ php -i | grep "mcrypt"
/etc/php/7.3/cli/conf.d/20-mcrypt.ini,
Registered Stream Filters => zlib.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, convert.iconv.*, mcrypt.*, mdecrypt.*
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value
- 修改myql
sql_mode
#Form lamp docker
vim /etc/mysql/my.cnf
vim /etc/my.cnf
都在文件末尾添加以下内容:
[mysqld]
sql_mode=ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#max_allowed_packet=100M
重启docker lamp容器之后,在 phpmyadmin 中
#phpmyadmin run sql
show variables like 'sql_mode';
临时设置 sql_mode
#phpmyadmin run sql
set global sql_mode='ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
- 修正 apache2 默认列出
Indexs
# Form docker
vim /etc/apache2/sites-available/000-default.conf
将 <Directory /var/www/html>
的Options Indexes FollowSymLinks MultiViews
改为 Options FollowSymLinks MultiViews
(移除 Indexes
)
按ESC键,输入:wq
保存文件修改
# Form docker,restart apache2
service apache2 restart
rsync note
通过ssh的方式,将远程的文件同步到当前服务器的一个文件夹下
将 远程的 /home/vagrant/sh/
文件放入到本机的/home/vagrant/syncfrom155
文件夹中
rsync -v -r -e ssh vagrant@192.168.1.155:/home/vagrant/sh/* /home/vagrant/syncfrom155
补充 docker容器自启动
$ docker run --help
...
--restart string Restart policy to apply when a container exits (default "no")
...
显示 docker run 命令的帮助信息
因上面docker 命令启动 lamp 容器时,没有加--restart=always
参数
docker run --restart=always
如果已创建容器并已启动,可通过下面的命令进行添加:
docker update --restart=always <CONTAINER ID>
如果想容器在 docker stop
之后,不想让容器自启动,尝试通过
docker update --restart=no <CONTAINER ID>
References
安装docker和docker的开机启动及容器的开机自启 了解到更新容器的参数部分,通过
docker update
命令docker 用 restart=always 启动一个 Mysql 容器,现在想删除这个容器怎么破? 对 已加
--restart=always
参数的容器 如何停止的讨论
docker-ce 搭建的 lamp 开发环境笔记的更多相关文章
- docker快速搭建php7.2-nginx开发环境
1.输入命令: docker search -s 100 php 搜索出下面图中列表,选择webdevops/php-nginx. 2.通过docker拉取webdevops/php-nginx镜像, ...
- Mac下使用Brew搭建PHP(LNMP/LAMP)开发环境
Mac下搭建lamp开发环境很容易,有xampp和mamp现成的集成环境.但是集成环境对于经常需要自定义一些配置的开发者来说会非常麻烦,而且Mac本身自带apache和php,在brew的帮助下非常容 ...
- Mac下用brew搭建PHP(LNMP/LAMP)开发环境
Mac下搭建lamp开发环境很容易,有xampp和mamp现成的集成环境.但是集成环境对于经常需要自定义一些配置的开发者来说会非常麻烦,而且Mac本身自带apache和php,在brew的帮助下非常容 ...
- ES6 学习笔记 (2)-- Liunx环境安装Node.js 与 搭建 Node.js 开发环境
笔记参考来源:廖雪峰老师的javascript全栈教程 一.安装Node.js 目前Node.js的最新版本是6.2.x.首先,从Node.js官网下载对应平台的安装程序. 1.下载 选择对应的Liu ...
- Ubuntu16.04搭建LAMP开发环境
Ubuntu16.04搭建LAMP开发环境 虚拟机上安装好Ubuntu16.04后,是一台空白的Ubuntu.我的目的是搭建LAMP环境,顺便搭一个Python Django环境. 基本设置 1.配置 ...
- 用 Docker 搭建 ORACLE 数据库开发环境
用 Docker 搭建 ORACLE 数据库开发环境 需要安装 ORACLE 数据库做开发,直接安装的话因为各类平台的限制,非常复杂,会遇到很多问题. 还好,现在有 Docker 化的部署方式,省去很 ...
- 如何通过Docker搭建一个swoft开发环境
本篇文章给大家分享的内容是关于如何通过Docker搭建一个swoft开发环境 ,内容很详细,有需要的朋友可以参考一下,希望可以帮助到你们. Swoft首个基于 Swoole 原生协程的新时代 PHP ...
- Android群英传神兵利器读书笔记——第一章:程序员小窝——搭建高效的开发环境
1.1 搭建高效的开发环境之操作系统 1.2 搭建开发环境之高效配置 基本环境配置 基本开发工具 1.3 搭建程序员的博客平台 开发者为什么要写作 写作平台 第三方博客平台 自建博客平台 开发论坛 1 ...
- 15分钟在笔记本上搭建 Kubernetes + Istio开发环境
11月13~15日,KubeCon 上海大会召开,云原生是这个秋天最火热的技术.很多同学来问如何上手 Kubernetes和Istio 服务网格开发.本文将帮助你利用Docker CE桌面版,15分钟 ...
随机推荐
- 【串线篇】Mybatis拓展之MBG
MBG-逆向工程 一.介绍 MBG:MyBatis Generator:代码生成器: MyBatis官方提供的代码生成器:帮我们逆向生成: 正向: table----javaBean---BookDa ...
- 英语单词contributors
contributors 来源——github网站 翻译 n. 贡献者:参与者:编著者(contributor的复数形式) TOEFL | GMAT 词根:cont ...
- HDU 6040 Hints of sd0061 —— 2017 Multi-University Training 1
Hints of sd0061 Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others ...
- delphi 异形窗体可半透明
unit xDrawForm; interface uses Windows, Messages, SysUtils, Classes, Controls, Forms, Menus, Graphic ...
- 设置element表格透明样式
1.element table 表格 修改背景为透明并去除边框 .el-table{ /* 表格字体颜色 */ color:white; /* 表格边框颜色 */ /* border: 0.5px s ...
- Golang操作MySQL的正确姿势
封装原因: 查看了很多网上提供的ORM类型的数据库操作,觉得比较麻烦,需要提前配置很多的表结构体,然后才能使用,对于数据表很多的项目就配置起来就比较麻烦,所以对golang的mysql包进行了外层包装 ...
- 弗洛伊德Floyd求最小环
模板: #include<bits/stdc++.h> using namespace std; ; const int INF = 0xffffff0; ]; void Solve(in ...
- 公司-IT-Mercari:Mercari 百科
ylbtech-公司-IT-Mercari:Mercari 百科 Mercari是一个日本C2C二手交易平台.拥有针对智能手机的C2C(个人与个人之间的电子商务)二手交易APP,此外还提供针对书籍与C ...
- jmeter 测试结果分析术语
label:定义http请求名称. samples:测试中一共发出的请求. average:平均响应时长.默认是单个request的平均响应时长. median:中位数,50%用户的响应时长. 90% ...
- centos7运行yum报如下提示:Run "yum repolist all" to see the repos you have
centos7运行yum报如下提示: There are no enabled repos. Run "yum repolist all" to see the repos you ...