制作 php + nginx 的 docker 镜像

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sun_cainiao/article/details/79955329

Dockerfile

先新建目录,在目录下新建 Dockerfile 文件,docker 会根据该文件来 build 镜像。

# 借用官方的的 php-fpm 镜像
FROM php:7.2.4-fpm-stretch

# 用来代替 cd,最好用绝对路径
WORKDIR /app

# 复制内容
COPY . /app

# 安装 nginx
RUN apt-get update && apt-get install nginx -y \
    && apt-get install vim -y

# 暴露 80 端口
EXPOSE 80

安装软件时,比较方便的就是用 apt-get install 了。如果需要手动安装就先用 COPY 命令把文件复制进去,然后用 RUN 命令执行安装命令。

build 镜像:
docker build -t php-test .

运行容器,并将 80 端口映射到 host 上的 8800 端口(-d表示后台运行,-v表示 host 文件夹与容器文件夹的映射(类似于虚拟机的共享文件夹,可以将配置目录都 mount 到 host 上,省的在 docker 容器里装编辑器),公司同事有遇到过 host 文件内容更新而 container 没有变化的问题):
docker run -d -v /home/ksun/workspace/docker_volume:/app -p 8800:80 --name php-container php-test

官方的 php-fpm 镜像中是直接把 php-fpm 暴露在 9000 端口上的,所以在 nginx 配置文件中直接使用 fastcgi_pass 127.0.0.1:9000;

数据存储

对于持久化的数据,使用 volume 往往比 直接记录到容器的 writable layer 要好。volume 是独立于容器的,方便移植和维护。

本地开发

用来本地开发的话直接用 Ubuntu 镜像,然后把 vim 等一些方便开发的软件都装上。

连接到容器

  • 连接到正在运行的容器的 shell:docker exec -i -t php-container /bin/bash
  • 也可以在运行容器时就连接到容器的 shell(应该会很少用到):docker run -i -t ...

镜像中放哪些东西

镜像中应该放些通用的东西,对于项目间不同的内容,可以在建立容器后,在容器里进行添加(这些内容就不适合放到 volume 里了吧,不会去移植)。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页