朝花夕拾|勿忘初心 朝花夕拾|勿忘初心

让Docker简单点

in Docker read (422) 672汉字 站长Lucifaer 文章转载请注明来源!

这段时间有人跟我说Docker跟着文档走一遍好烦,最主要的是看完文档自己还是不会用Docker,就非常的难受。

那么....我们为啥必须得受Docker的支配?我们就想平时用一用Docker本地搭建个环境来测试代码,为啥非要整的那么复杂。

虽然我也是才玩Docker,但是我又不搞云端的集成化的大型Docker项目,甚至我连Docker Compose都用不到,自己够用就行,那大家都简单点,于是就有了这篇文章。

让你的电脑轻松点——用Docker搭建简单的Apache2+PHP环境

这里先立一个flag,以后我的主机不装繁杂的Apache2+PHP+Mysql。为啥呢,因为Docker已经简单的帮你解决了这些问题。

你需要点啥:

  • Docker(废话︿( ̄︶ ̄)︿)
  • 一个写Dockerfile的编辑器(这边稍稍推荐一下VSCode,嗯,微软不愧是专业做编辑器的)

打开你的VSCode(编辑器),把下面这点写进去:

FROM ubuntu:latest
MAINTAINER Lucifaer "924463052@qq.com"
ENV REFRESHED_AT 2017-02-15
# 换源
RUN echo "deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse" > /etc/apt/sources.list \
    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse" >> /etc/apt/sources.list \
    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse" >> /etc/apt/sources.list \
    && echo "deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse" >> /etc/apt/sources.list
# APT 安装PHP相关依赖包,如需其他的依赖包在此添加
RUN apt-get update \
    && apt-get -y install \
        apache2 \
        php \
        libapache2-mod-php \
        && apt-get clean \
        && apt-get autoclean \
        && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Apache2 配置文件:/etc/apache2/apache2.conf
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf
# PHP配置文件:/etc/php7/apache2/php.ini
# 设置默认目录
RUN mkdir -p /app && rm -rf /var/www/html && ln -s /app /var/www/html
COPY . /app
WORKDIR /app
RUN chmod 755 ./start.sh

EXPOSE 80
CMD ["service apache2 start"]
CMD ["./start.sh"]

start.sh的内容:

#!/bin/bash

source /etc/apache2/envvars
tail -F /var/log/apache2/* &
exec apache2 -D FOREGROUND

准备好了上面这点东西,再写个测试的文件index.php

<?php
    phpinfo();

命令行运行:

$ docker build -t=lucifaer/apache2-php .
执行完后:
$ docker run -d -p 9999:80 --name apache2-php lucifaer/apache2-php

就可以看到phpinfo的信息了。

然后你就有疑问了,我要这么简单的环境干嘛,啥都干不了.....

别急,往下看。

简单点、简单点——建立PHP Coding环境

我们把上面的容器删除了,重新来run一个容器。

$ docker rm -f bfd1a397730dc05653ed6acbc4ac4b2153c7f05c4e411a74629bf68a97081e72

在创建一个新的容器前,我们在当前目录下创建一个你的Coding目录:

$ mkdir $PWD/website && cd $PWD/website
建立一个测试文件
$ vim index.php

index.php

<?php
    $a = 1;
    $b = $_GET['b'];
    echo $a;

命令行运行以下命令:

$ cd .. && docker run -d -p 9999:80 --name apache2-php -v $PWD/website:/app/website:rw lucifaer/apache2-php

访问127.0.0.1:9999/website就可以看到结果1了。

还没完,如果这个时候你更改index.php

<?php
    $a = 1;
    $b = $_GET['b'];
    echo $b;

再访问127.0.0.1:9999/website?b=2,就可以看到会输出2。

也就是你在本地修改website中的内容,同时会映射或者同步到容器中的相应目录中,这样就完成了PHP Coding的环境。

再简单一点——需要什么版本的PHP环境,我就用什么版本的PHP环境

上面是用PHP7来搭建的环境,那么问题来了,如果我现在想换成PHP5的环境,是不是还要重新在改Dockefile,这样好蠢啊。

我也觉得这挺蠢的。下面用另外一种更简单的方法:

Dockerfile:

FROM php:7.0-apache
COPY ./ /var/www/html/

没了 = =。命令行运行:

$ docker build -t lucifaer/apache-php .
$ docker run --name apache-php -p 9999:80 -d -v $PWD/website:/var/www/html/website:rw lucifaer/apache-php

最简单的方法——不能再简单了

直接命令行输入:

$ docker run -d -p 9999:80 --name my-apache-php-app -v "$PWD":/var/www/html php:7.0-apache

完成PHP+Apache2环境的启动。

简单的连接数据库

就用搭建一个WordPress为例子,连Dockerfile都不需要(在搭建环境前到DockerHub看一下有木有现成的环境,直接拖下来)

$ docker pull wordpress:latest
$ docker pull mysql:latest
$ docker run --name wp-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wp -d mysql
$ docker run --name wp --link wp-mysql:mysql -d -p 9999:80 wordpress

ok,完成搭建。

别把Docker弄得那么复杂,多玩一玩,就熟悉了。

docker
最后由Lucifaer修改于2017-06-01 00:35

此处评论已关闭

博客已萌萌哒运行
© 2018 由 Typecho 强力驱动.Theme by Yodu
PREVIOUS NEXT
雷姆
拉姆