使用docker-compose构造LAMP环境

栏目: 数据库 · 发布时间: 5年前

内容简介:使用docker-compose构造LAMP环境,其中日志、mysql数据库、mysql配置文件、网站文件均持久化存储到本机。apache、php通过Dockerfile构造,Dockerfile拉取ubuntu镜像,然后安装apache2和php。mysql的话通过docker的links连接mysql:5.5这个镜像当作数据库。

0x00 实现功能

使用docker-compose构造LAMP环境,其中日志、 mysql 数据库、mysql配置文件、网站文件均持久化存储到本机。

apache、 php 通过Dockerfile构造,Dockerfile拉取ubuntu镜像,然后安装apache2和php。

mysql的话通过 docker 的links连接mysql:5.5这个镜像当作数据库。

0x01 文件构造

➜  tree apache
apache
├── Dockerfile
├── conf
│   └── my.cnf
├── docker-compose.yml
├── log
│   ├── apache
│   └── mysql
├── mysql
├── src
│   ├── init.sh
│   └── sources.list
└── www
    └── index.php

7 directories, 6 files

0x02 docker-compose.yml

version: '3'
services:
  apache:
    image: ubuntu:apache #镜像名为ubuntu,tag为apache
    container_name: apache #运行后生成的容器名字为apache
    build: . #使用当前路径下的Dockerfile构造镜像
    ports:
      - "80:80"
    volumes:
      - ./www:/var/www/html
      - ./log/apache:/var/log/apache2
    links:
      - mysql
    mem_limit: 1024m #最大内存使用不超过1024m
    restart: always #容器重启策略:当容器终止退出后,总是重启容器,默认策略。
  mymysql:
    image: mysql:5.5 #拉取mysql:5.5
    container_name: mysql
    ports:
      - "3306:3306"
    volumes:
      - ./conf/my.cnf:/etc/my.cnf
      - ./mysql:/var/lib/mysql
      - ./log/mysql:/var/log/mysql
    environment: #设置环境变量
      - MYSQL_ROOT_PASSWORD=root #mysql密码为root
    mem_limit: 1024m #最大内存使用不超过1024m

0x03 Dockerfile

FROM ubuntu:14.04.4
MAINTAINER reber <1070018473@qq.com>


ENV AUTO_RUN_DIR /apache_init.d #定义会被容器自动执行的目录
ENV INIT_SHELL init.sh #定义 shell 文件名

COPY ./src /data
WORKDIR /data
RUN chmod +x init.sh
RUN cp sources.list /etc/apt/sources.list && apt-get update
RUN apt-get install -y apache2
RUN apt-get install -y php5 php5-gd php5-mysql libapache2-mod-php5 libapache2-mod-auth-mysql

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #设定时区

WORKDIR /var/www/html

CMD ["/data/init.sh"]
#ENTRYPOINT ["tail","-f","/dev/null"]

0x04 conf/my.cnf

[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
init_connect='SET NAMES utf8'

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

0x05 src/sources.list

deb http://debian.ustc.edu.cn/ubuntu/ trusty main restricted universe multiverse
deb http://debian.ustc.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
deb http://debian.ustc.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
deb http://debian.ustc.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://debian.ustc.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://debian.ustc.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse

0x06 src/init.sh

#!/bin/bash

service apache2 restart
tail -f /dev/null

0x07 www/index.php

<?php
    //因为使用了links,所以在apache这个容器中可以直接用"mymysql"字符连接数据库,
    //使用links后其实就是在apache这个容器的hosts文件中添加了"mymysql"字符到mysql容器的ip的映射
    $link = mysql_connect("mymysql", "root", "root");
    if(!$link)
        die('Could not connect: ' . mysql_error());
    else
        echo "Successfully connect to the mysql.";
    mysql_close($link);
?>

0x08 启动后访问

使用docker-compose构造LAMP环境


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

区块链

区块链

(美)梅兰妮·斯万 / 新星出版社 / 2016-1-1 / 50元

本书以全景式的方式介绍了区块链相关技术目前发展状况和未来技术衍生方向的展望,作者认为区块链技术可能是继互联网发明以来最大的技术革命。全书从比特币的概念模型和区块链技术正开始结合的方面讨论了三个不同的结构层面:区块链1.0、2.0和3.0。首先介绍了比特币和区块链技术的基本定义和概念,还有作为区块链1.0应用核心的货币和支付系统。其次,区块链2.0将超越货币范畴,会发展为货币市场和金融应用,类似于合......一起来看看 《区块链》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具