daocloud创建mysql_GitHub - DaoCloud/php-apache-mysql-sample

如何开发一个 PHP + MySQL 的 Docker 化应用

目标:基于典型的 LAMP 技术栈,用 Docker 镜像的方式搭建一个 Linux + Apache + MySQL + PHP 的应用 。

创建 PHP 应用容器

因所有官方镜像均位于境外服务器,为了确保所有示例能正常运行,DaoCloud 提供了一套境内镜像源,并与官方源保持同步。

首先,选择官方的 PHP 镜像作为项目的基础镜像。

FROM daocloud.io/php:5.6-apache

接着,用官方 PHP 镜像内置命令docker-php-ext-install安装 PHP 的 MySQL 扩展依赖。

RUN docker-php-ext-install pdo_mysql

依赖包通过 docker-php-ext-install 安装,如果依赖包需要配置参数则通过 docker-php-ext-configure 命令。

安装 pdo_mysql PHP 扩展。

然后,将代码复制到目标目录。

COPY . /var/www/html/

因为基础镜像内已经声明了暴露端口和启动命令,此处可以省略。

至此,包含 PHP 应用的 Docker 容器已经准备好了。PHP 代码中访问数据库所需的参数,是通过读取环境变量的方式声明的。

$serverName = env("MYSQL_PORT_3306_TCP_ADDR", "localhost");

$databaseName = env("MYSQL_INSTANCE_NAME", "homestead");

$username = env("MYSQL_USERNAME", "homestead");

$password = env("MYSQL_PASSWORD", "secret");

/**

* 获取环境变量

* @param $key

* @param null $default

* @return null|string

*/

function env($key, $default = null)

{

$value = getenv($key);

if ($value === false) {

return $default;

}

return $value;

}

这样做是因为在 Docker 化应用开发的最佳实践中,通常将有状态的数据类服务放在另一个容器内运行,并通过容器特有的 link 机制将应用容器与数据容器动态的连接在一起。

绑定 MySQL 数据容器(本地)

首先,需要创建一个 MySQL 容器。

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:5.5

之后,通过 Docker 容器间的 link 机制,便可将 MySQL 的默认端口(3306)暴露给应用容器。

docker run --name some-app --link some-mysql:mysql -d app-that-uses-mysql

绑定 MySQL 数据服务(云端)

比起本地创建,在云端创建和绑定 MySQL 数据服务会更简单。

注册成为 DaoCloud 用户。

在 DaoCloud 「控制台」中选择「代码构建」。

创建新项目,选择代码源,开始构建镜像。

在「服务集成」创建 MySQL 服务实例。

将构建的应用镜像关联 MySQL 服务实例并部署在云端。

DaoCloud 使用图文介绍

了解如何用 DaoCloud 进行代码构建:参考代码构建。

了解如何用 DaoCloud 进行持续集成:参考持续集成。

了解如何用为应用准备一个数据库服务:参考服务集成。

了解如何部署一个刚刚构建好的应用镜像:参考应用部署。

php-apache-mysql-sample 应用截图

php-apache-mysql.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动计算尺寸列表功能案例ios源码

源码HTKDynamicResizingCell&#xff0c;HTKDynamicResizingCell提供自动计算尺寸的TableViewCell/CollectionViewCel&#xff0c;只要设置了合适AutoLayout的约束。<ignore_js_op> 使用方法&#xff1a;使用CocoaPods添加&#xff1a; pod HTKDynamicResizingCell, ~>…

休眠NONSTRICT_READ_WRITE CacheConcurrencyStrategy如何工作

介绍 在我以前的文章中 &#xff0c;我介绍了READ_ONLY CacheConcurrencyStrategy &#xff0c;这是不可变实体图的显而易见的选择。 当缓存的数据可变时&#xff0c;我们需要使用读写缓存策略&#xff0c;本文将介绍NONSTRICT_READ_WRITE二级缓存的工作方式。 内部运作 提交H…

mysql用大白话解释_Java基础--2021Java面试题系列教程--大白话解读

前言序言再高大上的框架&#xff0c;也需要扎实的基础才能玩转&#xff0c;高频面试问题更是基础中的高频实战要点。适合阅读人群Java 学习者和爱好者&#xff0c;有一定工作经验的技术人&#xff0c;准面试官等。阅读建议本教程是系列教程&#xff0c;包含 Java 基础&#xff…

Android开源之行之走进zxing,轻松实现二维码扫描(二)

对于Zxing开源项目的简化上文已给出&#xff0c;源码经过测试且不断修改。众所周知&#xff0c;Zxing项目的扫描是横向的&#xff0c;这么引用的用户体验确实不好&#xff1b;然而盲目的修改会出现拉伸以及样本采集的偏离。所以这里说一下如何将横屏修改为竖屏扫描 解决办法引用…

mysql二进制大文件_Mysql实例Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)...

《Mysql实例Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改调试整理)》要点&#xff1a;本文介绍了Mysql实例Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改调试整理)&#xff0c;希望对您有用。如果有疑问&#xff0c;可以联系我们。#include "stdafx.h"/…

阿里云mysql创建多个用户_阿里云MySQL创建指定用户访问指定表

欢迎大家关注我的公众号&#xff0c;有问题可以及时和我交流。1.首先进入到root用户环境mysql -uroot -p输入自己的root密码登录。登录成功之后如果表之前已经存在的话就不需要创建&#xff0c;如果表不存在的话使用创建表命令创建。create database table&#xff1b;2.给用户…

自定义实现moveable button

实现的效果图&#xff1a; 自定义MVButton&#xff0c;继承自UIButton. 属性声明如下&#xff1a; property (nonatomic) CGPoint beginPoint; property (nonatomic) BOOL dragEnable;//自定义button对触摸事件进行响应- (void)touchesBegan:(NSSet *)touches withEvent:(UI…

jOOQ星期二:Vlad Mihalcea深入了解SQL和Hibernate

欢迎来到jOOQ Tuesdays系列。 在本系列中&#xff0c;我们每隔一个月的第三个星期二发布一篇文章&#xff0c;从jOOQ的角度采访我们发现该行业令人兴奋的人。 这包括从事SQL&#xff0c;Java&#xff0c;开放源代码以及其他各种相关主题的人员。 我们很高兴在第三版中与Vlad …

GitHub初次使用记录(一)

1、从GitHub上克隆或者复制别人的档案库&#xff1a; 克隆档案库时需要打开本地Git客户端&#xff08;比如GitHub for Windows 和 GitExtesnsion &#xff09;操作。 下面是用GitExtension克隆档案库&#xff1a; 转载于:https://www.cnblogs.com/lxf1117/p/4140048.html

java集成_Java继承

一.继承1.简介&#xff1a;特点&#xff1a;利于代码复用&#xff1b;缩短开发周期。注&#xff1a;子类不能直接访问父类的私有属性满足“A is a B”的关系就可以形成继承关系例&#xff1a;父类&#xff1a;1 packagecom.swpu.animals;23 public classAnimal {4 //属性5 priv…

java猜数字小游戏_Java实现简单猜数字小游戏

本文实例为大家分享了Java实现猜数字游戏的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下完成猜数字游戏需要实现以下几点&#xff1a;获得一个随机数作为“答案数”&#xff1b; 输入数字&#xff0c;与“答案数”作比较(判断大了&#xff0c;小了&#xff0c;相等…

java软件工程师 英文简历_2017java程序员英文简历范文

2017java程序员英文简历范文简历写完以后&#xff0c;再检查一下你的简历是否回答了以下问题&#xff1a;它是否清楚并能够让雇主尽快知道你的能力?是否写清了你的能力?是否写清了你要求这份工作的.基础?有东西可删除吗?尽力完善你的简历直到最好。2017java程序员英文简历范…

写给java web一年左右工作经验的人

摘要 大学就开始学习web&#xff0c;磕磕绊绊一路走过来&#xff0c;当中得到过开源社区很多的帮助&#xff0c;总结了这些年来的技术积累&#xff0c;回馈给开源社区。 ps&#xff1a;图片都是从网上盗。。。感谢原作者。 ps&#xff1a;文字千真万确都是我自己写的。 在此&am…

FlexyPool如何支持Dropwizard Metrics包重命名

介绍 FlexyPool严重依赖Dropwizard &#xff08;以前是Codahale&#xff09;度量标准来监视连接池的使用情况 。 集成到Dropwizard中后&#xff0c;程序包名称必然会被重命名 。 因此&#xff0c;4.0.0版本将使用io.dropwizard.metrics软件包名称代替com.codahale.metrics 。 …

嵌入式Linux学习笔记

一 嵌入式系统定义&#xff1a; 应用于特定环境的硬件体系。 二 两样非常重要的能力&#xff1a; 1. 掌握各种新概念的能力 2. 调试的能力( 包括软件, 硬件 ) 三 需要的基础知识&#xff1a; 1. 操作系统理论基础 2. 数据结构 3. C,C编程语言 4. 汇编语言 5. Linux基…

java string 内存占用_JVM系列之:String,数组和集合类的内存占用大小

简介之前的文章中&#xff0c;我们使用JOL工具简单的分析过String,数组和集合类的内存占用情况&#xff0c;这里再做一次更详细的分析和介绍&#xff0c;希望大家后面再遇到OOM问题的时候不再抱头痛哭&#xff0c;而是可以有章可循&#xff0c;开始吧。数组先看下JOL的代码和输…

maven osgi_OSGi将Maven与Equinox结合使用

maven osgi很长时间以来&#xff0c;我一直在努力理解OSGi的真正含义。 它已经存在很长时间了&#xff0c;但是没有多少人意识到这一点。 它被炒作是一种非常复杂的技术。 这是我为所有Java开发人员简化的尝试。 简而言之&#xff0c; OSGi是一组规范&#xff0c;这些规范支持模…

python中、文件最重要的功能是( )和接收数据_Python基础语法14个知识点大串讲

来源&#xff1a;Python数据之道Python基础语法大串讲Python 是一门面向对象的编程语言&#xff0c;相信这篇文章对于初学者而言应该会有一个比较大的帮助&#xff0c;下面我们将 Python 中常用的基础语法和函数做了一个汇总&#xff0c;满满的干货&#xff0c;供大家学习。1、…

hadoop简单介绍_Hadoop:简单介绍

hadoop简单介绍什么是Hadoop&#xff1a; Hadoop是用Java编写的框架&#xff0c;用于在大型商品硬件群集上运行应用程序&#xff0c;并具有类似于Google File System和MapReduce的功能 。 HDFS是一个高度容错的分布式文件系统&#xff0c;与Hadoop一样&#xff0c;旨在部署在低…

java mvc 案例_springmvc经典案例

本想自己写一下总结&#xff0c;但是发现一篇好文&#xff0c;转发一下&#xff0c;日后自己再做补充&#xff1b;感谢Sunnier&#xff0c;引自&#xff1a;https://www.cnblogs.com/sunniest/p/4555801.htmlSpringMVC学习笔记----一、SpringMVC基础入门&#xff0c;创建一个He…