使用docker打造私人专属网站环境包

在上一篇教程中我们制作了nginx静态环境应用,感兴趣的小伙伴可查看《10分钟制作一个nginx静态网站环境应用》,那么本期教程将在这个基础上进行升级,我们将要制作一个php动态网站环境。

制作镜像

首先将上次做好的镜像从hub.docker.com上拉取回来,使用命令docker pull 将yeqing112/alpine-nginx:0.0.1镜像拉取到本地:

root@ubuntu:~# docker pull yeqing112/alpine-nginx:0.0.1
0.0.1: Pulling from yeqing112/alpine-nginx
bdf0201b3a05: Already exists
0c854d799ec5: Pull complete
Digest: sha256:94c5f0c38a3de543cde52791b3daff3fdc8001e99bf58bb08230b2cab3e062a3
Status: Downloaded newer image for yeqing112/alpine-nginx:0.0.1
root@ubuntu:~#

启动并进入容器:

root@ubuntu:~# docker run -it --name php-fpm7-alpine  yeqing112/alpine-nginx:0.0.1 sh
/ #

安装php与相关扩展:

/ # apk add --no-cache php7 php7-ftp php7-pdo php7-mysqli php7-simplexml php7-xmlwriter php7-zlib php7-imagick php7-memcached php7-sockets php7-mcrypt php7-zip php7-pgsql php7-pdo_odbc php7-odbc php7-curl php7-iconv php7-xml php7-json php7-gd php7-session php7-opcache php7-pdo_sqlite php7-mbstring php7-fpm php7-common php7-pdo_mysql

这一口气我们安装了很多扩展,你可以根据实际需求减少或增加,之后简单设置一下nginx.conf,并在网站根目录下创建hello world页面。

退出容器

/ # exit

使用docker commit命令打包新镜像:

root@ubuntu:~# docker commit php-fpm7-alpine yeqing112/php-fpm7-alpine:0.0.1
sha256:b626d41e876e97957a98cfb52d37c87d1cd8ca1cb68500c6b708627350f93dca
root@ubuntu:~#

docker images查看镜像:

root@ubuntu:~# docker images
REPOSITORY                  TAG                   IMAGE ID            CREATED             SIZE
yeqing112/php-fpm7-alpine   0.0.1                 b626d41e876e        3 minutes ago       105MB

ok,镜像制作完成了,我们来简单运行一下看看吧

root@ubuntu:~# docker run -dit --name myphpsite -p 8080:80 yeqing112/php-fpm7-alpine:0.0.1 sh

我们把母机8080端口映射到了容器的80端口,docker ps查看一下容器:

root@ubuntu:~# docker ps
CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                                                                    NAMES
04b392e7ae75        yeqing112/php-fpm7-alpine:0.0.1         "sh"                     8 seconds ago       Up 6 seconds        0.0.0.0:8080->80/tcp                                                     myphpsite

我们通过http://ip:8080去访问页面看出,此时容器内的php和nginx并没有启动,现在需要进入容器内部手动启动php和nginx:

root@ubuntu:~# docker exec -it myphpsite sh
/ # php-fpm7 && nginx
/ #

将php和nginx启动后,这时我们用浏览器访问http://ip:8080 就可以看到hello world页面了。 img

如何让容器内部服务自启动

网上有大量的教程教大家如何让容器内部服务自启动,但配置过程相对复杂,这里教大家一个比较取巧而简单的方法,利用Dockerfile构建镜像,在镜像中加入启动脚本即可。 首先新建一个Dockerfile文件:

root@ubuntu:~# vi Dockerfile

Dockerfile内容如下:

FROM yeqing112/php-fpm7-alpine:0.0.1
MAINTAINER yeqing "yeqing@qq.com"

EXPOSE 80
EXPOSE 443

CMD php-fpm7 && nginx && sh && exit

CMD这一行中就是让服务启动的命令,前两个大家一看就知道什么意思,后面的sh目的是让容器正常开启,如果没有sh的加入,容器是不能启动起来,最后一个exit就是退出容器的意思。

将Dcokerfile文件保存后,使用docker build命令构建镜像,将新镜像命名为yeqing112/php-fpm7-alpine:0.0.2

root@ubuntu:~# docker build -t yeqing112/php-fpm7-alpine:0.0.2 .

构建成功后。

最近更新

猜你喜欢

最近的文章

VMware Workstation 15 Pro 永久激活密钥

网络上搜集的VMware Workstation 15 Pro永久激活密钥,分享给需要的同学仅供学习交流使用,如长期使用请支持正版!VMware Work...…

VMware激活继续阅读
更早的文章

Ubuntu下压缩与解压各种文件的命令

1、压缩与解压xz文件压缩xz -z filename解压xz -d filename.xz2、压缩与解压tar文件压缩tar -cvf filen...…

linux linux压缩 linux解压继续阅读