Dockerfile 就是用来构建 docker 镜像的构建文件
一.Dockerfile 构建一个自己的 centos 镜像
1.新建Dockerfile,并添加创建镜像的内容
新建一个名为 Dockerfile 文件,并在文件内添加以下内容:
#基于centos构建镜像 FROM centos #安装net-tools软件: RUN表示安装软件 RUN yum install -y net-tools #通过镜像启动容器时,直接进入wwwroot目录,如果没有这个目录,则会新建: WORKDIR相当于cd WORKDIR /home/wwwroot #启动容器时,执行/bin/bash指令:CMD相等与执行命令 CMD /bin/bash
要构建并实现上面的镜像,以前的办法: 下载一个centos镜像,通过镜像启动容器,进入容器,然后下载net-tools软件,然后cd 到wwwroot目录,执行/bin/bash,然后退出容器,把这个容器打包成一个新的镜像.
现在可以通过Dockerfile来实现上面的操作,构建一个centos镜像,操作如下:
2.通过docker build生成centos镜像
#1.创建Dockerfile,并写入需要创建的相关命令
[root@localhost docker]# cat Dockerfile
#基于centos构建镜像
FROM centos
#安装net-tools软件: RUN表示安装软件
RUN yum install -y net-tools
#通过镜像启动容器时,直接进入wwwroot目录: WORKDIR相当于cd
WORKDIR /home/wwwroot
#执行/bin/bash指令:CMD相等与执行命令
CMD /bin/bash
#2.通过docker build -t 命令创建docker镜像
#说明:
# docker build -t docker.io/mycentos:v1 . docker.io/mycentos:v1 镜像名:版本号, "."一定不要忘了
[root@localhost docker]# docker build -t docker.io/mycentos:v1 .
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM centos
---> 5d0da3dc9764
Step 2/4 : RUN yum install -y net-tools
---> Running in 8d99c62edb01
CentOS Linux 8 - AppStream 68 B/s | 38 B 00:00
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
The command '/bin/sh -c yum install -y net-tools' returned a non-zero code: 1
这里报错了:
CentOS Linux 8 - AppStream 68 B/s | 38 B 00:00
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
因为最新版在2021年12月31日就停止了centos的源服务,根据网上的解决办法以dockerhub改为较低版本,代码修改如下,把FROM centos修改为FROM centos:centos7即可
[root@localhost docker]# vi Dockerfile
[root@localhost docker]# docker build -t docker.io/mycentos:v1 .
Sending build context to Docker daemon 2.048kB
#第一步:从centos7拉取镜像
Step 1/4 : FROM centos:centos7
centos7: Pulling from library/centos
Digest: sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
Status: Downloaded newer image for centos:centos7
---> eeb6ee3f44bd
#第二步:安装所需要的软件
Step 2/4 : RUN yum install -y net-tools
---> Running in 70e86cda1969
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
* base: mirrors.aliyun.com
* extras: mirrors.huaweicloud.com
* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package net-tools.x86_64 0:2.0-0.25.20131004git.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
net-tools x86_64 2.0-0.25.20131004git.el7 base 306 k
Transaction Summary
================================================================================
Install 1 Package
Total download size: 306 k
Installed size: 917 k
Downloading packages:
warning: /var/cache/yum/x86_64/7/base/packages/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for net-tools-2.0-0.25.20131004git.el7.x86_64.rpm is not installed
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Importing GPG key 0xF4A80EB5:
Userid : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
Package : centos-release-7-9.2009.0.el7.centos.x86_64 (@CentOS)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1
Verifying : net-tools-2.0-0.25.20131004git.el7.x86_64 1/1
Installed:
net-tools.x86_64 0:2.0-0.25.20131004git.el7
Complete!
Removing intermediate container 70e86cda1969
---> ea950f27d3c9
#第三步:进入wwwroot工作目录
Step 3/4 : WORKDIR /home/wwwroot
---> Running in 153c542f3a0a
Removing intermediate container 153c542f3a0a
---> 8ea126fe7368
#第四步:配置启动命令
Step 4/4 : CMD /bin/bash
---> Running in 01be49142282
Removing intermediate container 01be49142282
---> d757f6342cfa
Successfully built d757f6342cfa
Successfully tagged mycentos:v1
#创建镜像成功,通过docker images可查看
[root@localhost docker]#
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos v1 d757f6342cfa About a minute ago 434MB
通过Dockerfile创建一个镜像语法:
docker build -t 镜像名称[:版本号] .
镜像创建成功,那么下面通过该镜像启动一个容器:
3.通过生成的centos镜像启动容器
#通过mycentos镜像启动一个centos容器
[root@localhost docker]# docker run -it d757f6342cfa
#这里启动了容器,并且直接进入了wwwroot,说明CMD /bin/bash命令执行了,WORDDIR /home/wwwroot命令执行了
#ifconfig命令可用,说明下载了net-tools软件
[root@bde29f34fd72 wwwroot]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 18 bytes 2306 (2.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
好了,制作一个简单的centos镜像就ok了
二.Dockerfile 构建一个 nginx 镜像
1.生成Dockerfile文件,并写入相关代码逻辑
Dockerfile 构建一个 nginx 镜像 , 构建好的镜像内会默认有一个 /usr/share/nginx/html/index.html 文件,新建一个名为 Dockerfile 文件,并在文件内添加以下内容:
#从nginx拉取镜像
FROM nginx
#运行命令, 把 "你好docker"写入/usr/share/nginx/html/index.html
RUN echo '你好 docker' > /usr/share/nginx/html/index.html
#进入文件夹/usr/share/nginx/html
WORKDIR /usr/share/nginx/html
2.通过Dockerfile使用命令docker build创建镜像
具体操作如下:
vi Dockerfile_nginx
#从nginx拉取镜像
FROM nginx
#运行命令, 把 "你好docker"写入/usr/share/nginx/html/index.html
RUN echo '你好 docker' > /usr/share/nginx/html/index.html
#进入文件夹/usr/share/nginx/html
WORKDIR /usr/share/nginx/html
#生成nignx镜像
[root@localhost docker]# docker build -f Dockerfile_nginx -t docker.io/mynginx:v1 .
Sending build context to Docker daemon 3.072kB
Step 1/3 : FROM nginx
---> 593aee2afb64
Step 2/3 : RUN echo '你好 docker' > /usr/share/nginx/html/index.html
---> Running in b274412e722e
Removing intermediate container b274412e722e
---> 9871f424626b
Step 3/3 : WORKDIR /usr/share/nginx/html
---> Running in 9b4844c304e6
Removing intermediate container 9b4844c304e6
---> 63200c4b4d0e
Successfully built 63200c4b4d0e
Successfully tagged mynginx:v1
#生成nginx镜像成功,通过docker images 查看
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynginx v1 63200c4b4d0e 6 seconds ago 187MB
docker build -f Dockerfile_nginx -t docker.io/mynginx:v1 . 参数说明:
-f 获取Dockerfile名称
3.通过镜像启动容器,并验证nginx容器是否成功
#通过nginx镜像id启动一个nignx容器,并指定端口映射和后台运行
[root@localhost docker]# docker run -it -d -p 80:80 63200c4b4d0e
#启动成功
6f2727cc1cd6f476661835bc8fac708ff8120ecf8326cd74e52f9e4b788a25bf
#查看容器
[root@localhost docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6f2727cc1cd6 63200c4b4d0e "/docker-entrypoint.…" 54 seconds ago Up 52 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp busy_swanson
[root@localhost docker]#
#访问nginx内容,发送没问题
[root@localhost docker]# curl 127.0.0.1
你好 docker
#进入容器,发现是cd 到/usr/share/nginx/html文件中的,Dockerfile中的语法没问题
[root@localhost docker]# docker exec -it 6f2727cc1cd6 /bin/bash
root@6f2727cc1cd6:/usr/share/nginx/html# pwd
/usr/share/nginx/html
root@6f2727cc1cd6:/usr/share/nginx/html#
三.Dockerfile语法详解
注意:
(1).Dockerfile 文件的文件名建议使用Dockerfile ,如果是其他文件构建的时候需要指定文件名
(2). Dockerfile 构建镜像的执行顺序是从上往下(3). # 表示注释(4). 每一个指令都会创建一个新的镜像
Dockerfile中一些常用的语法命令
FROM # 基础境像 , 一切从这里开始构建MAINTAINER # 镜像是谁写的 , 姓名 + 邮箱LABEL # LABEL 指令用来给镜像添加一些元数据,可以通过docker inspect 查看相关信息RUN # 编译镜像时运行的脚本,这个非常重要:可以通过run安装一些软件,执行命令,以及安装依赖等COPY # 编译镜像时复制文件到镜像中,不会减压,和linux中的copy命令类似ADD # 编译镜像时复制文件到镜像中 ,tar.gz 文件会自动减压WORKDIR # 镜像的工作目录, 相当于liunx中的cd命令, 如果目录不存在,会自动创建CMD # 设置容器启动的命令,它会被启动容器时添加的启动命令覆盖ENTRYPOINT # 设置容器启动的命令,不会被启动容器时添加的启动命令覆盖EXPOSE # 设置镜像暴露的端口,这样就可以不用在启动容器时映射端口了VOLUME # 设置容器挂载的卷ENV # 设置容器的环境变量
下面具体举例讲解
1.FROM
指定哪种镜像作为新镜像的基础镜像,如:
FROM ubuntu:14.04
2.MAINTAINER
指明该镜像的作者和其电子邮件,如:
MAINTAINER "xxxxxxx@qq.com"
给镜像添加信息,使用 docker inspect 可查看镜像的相关信息
LABEL maintainer="xxx@qq.com"
LABEL version="1.0"
LABEL description="This is description"
4.RUN
在新镜像内部执行的命令,比如安装一些软件、配置一些基础环境,可使用 \ 来换行,如:
RUN echo 'hello docker!' \
> /usr/local/file.txt
RUN yum install net-tools -y
也可以使用 exec 格式 RUN ["executable", "param1", "param2"] 的命令,如:
5.COPY
将主机的文件复制到镜像内,如果目的位置不存在, Docker 会自动创建所有需要的目录结 构,但是它只是单纯的复制,并不会去做文件提取和解压工作。如:
COPY application.yml /etc/springboot/hello-service/src/resources
6.ADD
将主机的文件复制到镜像中,跟 COPY 一样,限制条件和使用方式都一样,如:
ADD application.yml /etc/springboot/hello-service/src/resources
但是 ADD 会对压缩文件(tar, gzip, bzip2, etc)做提取和解压操作
7.WORKDIR
在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会 创建目录,如下:最终会在/usr/local/webservice/ 目录下生成 text.txt 文件
WORKDIR /usr/local
WORKDIR webservice
RUN echo 'hello docker' > text.txt
用户切换目录 类似 cd 命令
8.CMD
容器启动时需要执行的命令,如:
CMD /bin/bash
同样可以使用 exec 语法,如:
CMD ["/bin/bash"]
9.ENTRYPOINT
CMD 和 ENTRYPOINT 同样作为容器启动时执行的命令,区别有以下几点:
- CMD 的命令会被 docker run 的命令覆盖而 ENTRYPOINT 不会
- 如使用 CMD ["/bin/bash"]或 ENTRYPOINT ["/bin/bash"]后,再使用 docker run -it image 启动容器,它会自动进入容器内部的交互终端,如同使用docker run -it image /bin/bash
- 但是如果启动镜像的命令为 docker run -ti image /bin/ps,使用 CMD 后面的命令就会被覆盖,转而执行 bin/ps 命令,而 ENTRYPOINT 的则不会,而是会把 docker run 后面的命令当做 ENTRYPOINT 执行命令的参数
ENTRYPOINT ["/user/sbin/nginx"]
10.EXPOSE 暴露端口
仅仅只是声明端口,作用:
- 帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射
- 在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口
EXPOSE 8080
EXPOSE 8081
11.VOLUME
通过 dockerfile 的 VOLUME 指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点注意 :通过 VOLUME 指令创建的挂载点,无法指定主机上对应的目录,是自动生成的格式:VOLUME ["<路径 1>", "< 路径 2>"...]VOLUME <路径 >通过 docker inspect 查看通过该 dockerfile 创建的镜像生成的容器
12.ENV
设置环境变量,定义了环境变量,那么在后续的指令中,就可以使用这个环境,格式:ENV <key> <value>ENV <key1>=<value1> <key2>=<value2>...以下示例设置 NODE VERSION = 7.2.0 , 在后续的指令中可以通过 $NODE VERSION 引用:
ENV NODE_VERSION 7.2.0
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.ta
r.xz" \
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc
13.ONBUILD
用于延迟构建命令的执行,简单的说,就是 Dockerfile 里用 ONBUILD 指定的命令,在本次构建镜像的过程中不会执行(假设镜像为 test-build ),当有新的 Dockerfile 使用了之前构建的镜像 FROM test-build ,这时执行新镜像的 Dockerfile 构建时候,会执行 test-build 的Dockerfile 里的 ONBUILD 指定的命令
ONBUILD <其它指令>
四.Dockerfile 构建镜像 并安装软件案例
1安装centos
vi Dockerfile_Centos
#从centos7拉取镜像
FROM centos:centos7
#指明该镜像的作者和其电子邮件
MAINTAINER test.com
#设置常量
ENV MyLocal /usr/local
#进入目录
WORKDIR $MyLocal
#暴露端口
EXPOSE 80
#挂载卷
VOLUME ["volume1","volume2"]
#安装软件,当在ubuntu中时,使用的是apt
RUN yum install -y net-tools
RUN yum install -y vim
#赋值当前文件夹下的文件到/root并解压
ADD test.tar.gz /root
#赋值当前文件夹下文件到/usr/local,不会解压
COPY test.tar.gz /usr/local
#容器启动命令
CMD /bin/bash
2.安装nginx
[root@localhost docker]# cat /home/git/docker_lnmp/nginx/Dockerfile
#从centos:7.4.1708拉取镜像
FROM centos:7.4.1708
#创建者名称,游戏
MAINTAINER 1028538262@qq.com
#运行命令:创建软连接
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#安装YUM源
RUN rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
RUN rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
#安装nginx
RUN yum -y install gcc gcc-c++ \
openssl openssl-devel \
zlib zlib-devel \
nginx supervisor
#暴露端口
EXPOSE 80
#执行命令,删除操作
RUN rm -rf /var/lib/yum/history/*.sqlite &&\
rm -rf /var/cache/yum
RUN rm -f /etc/supervisord.conf
#复制文件
COPY supervisord.conf /etc/
#COPY www.conf /etc/nginx/conf.d/
COPY nginx.conf /etc/nginx/
RUN mkdir -p /var/www/log/nginx
#CMD ["/usr/sbin/nginx","-g","daemon off;"]
#执行容器启动命令
CMD ["/usr/bin/supervisord","-c","/etc/supervisord.conf"]
3.安装php-fpm
[root@localhost php-fpm]# cat Dockerfile
FROM centos:7.4.1708
MAINTAINER 1028538262@qq.com
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#安装YUM源
RUN rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
RUN rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
#安装php-fpm
RUN yum -y install gcc gcc-c++ \
openssl openssl-devel \
zlib zlib-devel \
zip unzip \
git cmake doxygen \
php72w-xml \
php72w-gd \
php72w-cli \
php72w-fpm \
php72w-pear \
php72w-mysqlnd \
php72w-devel \
php72w-mcrypt \
php72w-mbstring \
php72w-common \
php72w-process \
php72w-pdo \
php72w-opcache \
php72w-intl \
php72w-bcmath \
#php71w-pecl-imagick \
php72w-pecl-redis \
php72w-pecl-memcached \
php72w-pecl-mongodb
#暴露端口
EXPOSE 9000
RUN sed -i 's@daemonize = yes@daemonize = no@g' /etc/php-fpm.conf
RUN sed -i -e 's@listen = 127.0.0.1:9000@listen = 0.0.0.0:9000@g' /etc/php-fpm.d/www.conf
RUN sed -i -e 's@listen.allowed_clients = 127.0.0.1@;listen.allowed_clients = 127.0.0.1@g' /etc/php-fpm.d/www.conf
#RUN sed -i -e 's@extension=imagick.so@;extension=imagick.so@g' /etc/php.d/imagick.ini
RUN rm -f /etc/php.ini
#复制php.ini配置文件到容器/etc下
COPY php.ini /etc/
RUN rm -f /etc/php-fpm.conf
COPY php-fpm.conf /etc/
RUN rm -f /etc/php-fpm.d/www.conf
COPY www.conf /etc/php-fpm.d/
RUN mkdir -p /var/www/log/php-fpm
#session问题
RUN mkdir /var/lib/php/session && chown -R apache:apache /var/lib/php
#phantomjs字体
COPY lyx /usr/share/fonts
#复制sphinx包到/usr/local/src并解压
ADD sphinx-2.2.11-release.tar.gz /usr/local/src
#进入sphinx文件夹,
WORKDIR /usr/local/src/sphinx-2.2.11-release/api/libsphinxclient
#运行sphinx2配置
RUN ./configure --prefix=/usr/local/sphinx2/libsphinxclient && make && make install
ADD sphinx-339e123.tar.gz /usr/local/src
WORKDIR /usr/local/src/sphinx-339e123
RUN phpize
RUN ./configure --with-sphinx=/usr/local/sphinx2/libsphinxclient && make && make install
# 开启bcmath模块
#安装openCC
#WORKDIR /usr/local/src/
#RUN git clone git://github.com/BYVoid/OpenCC.git --depth 1
#WORKDIR /usr/local/src/OpenCC
#RUN make && make install
#ADD master.zip /usr/local/src
#WORKDIR /usr/local/src
#RUN unzip master.zip
#WORKDIR /usr/local/src/opencc4php-master
#RUN ln -s /usr/lib/libopencc.so.2 /usr/lib64/libopencc.so.2
#RUN phpize
#RUN ./configure && make && make install
#安装swoole扩展,因为该镜像需要先安装swoole依赖的libstdc++
RUN cd ~ \
RUN yum -y install libstdc++ \
wget \
docker-php-ext-install
ADD swoole-src-4.4.2.tar.gz /usr/local/src
WORKDIR /usr/local/src/swoole-src-4.4.2
RUN phpize
RUN ./configure && make && make install
#&& yum -y install libstdc++ wget docker-php-ext-install\
# && cd ~ \
# && wget https://github.com/swoole/swoole-src/archive/v4.4.2.tar.gz \
# && tar -zxvf v4.4.2.tar.gz \
# && mkdir -p /usr/src/php/ext \
# && mv swoole-src-4.4.2 /usr/src/php/ext/swoole \
# && swoole \
#&& phpize \
#&& ./configure && make && make install
#
ADD grpc.tar.gz /usr/local/src
WORKDIR /usr/local/src/grpc-1.28.0
#运行phpize
RUN phpize
RUN ./configure && make && make install
RUN pecl install protobuf
RUN yum -y install cronie
RUN yum -y install crontabs
RUN sed -i '/session required pam_loginuid.so/c\#session required pam_loginuid.so' /etc/pam.d/crond
RUN yum -y install rsyslog
RUN touch /var/log/cron
RUN rm -f /etc/crontab
COPY crontab /etc/
#phantomjs字体
RUN yum -y install bitmap-fonts bitmap-fonts-cjk
#安装supervisor
RUN yum -y install supervisor
RUN rm -rf /var/lib/yum/history/*.sqlite &&\
rm -rf /var/cache/yum
RUN rm -f /etc/supervisord.conf
ADD supervisord.conf /etc/
#CMD ["/usr/sbin/init"]
#CMD ["/usr/sbin/php-fpm"]
CMD ["/usr/bin/supervisord","-c","/etc/supervisord.conf"]
#ADD dockerd /etc/rc.d/init.d/
#RUN chmod 777 /etc/rc.d/init.d/dockerd
#CMD /etc/rc.d/init.d/dockerd
#安装rabbitmq-c依赖包
#RUN yum -y install wget \
# && cd ~ \
# && wget https://github.com/alanxz/rabbitmq-c/archive/v0.9.0.tar.gz \
# && tar -zxvf v0.9.0.tar.gz \
# && cd rabbitmq-c-0.9.0 \
# && autoreconf -i \
# && ./configure --prefix=/usr/local/rabbitmq-c \
# && make && make install
## 版本下载:https://github.com/alanxz/rabbitmq-c/releases/tag/v0.7.1
#wget https://github.com/alanxz/rabbitmq-c/releases/download/v0.7.1/rabbitmq-c-0.7.1.tar.gz
#tar -zxvf rabbitmq-c-0.5.0.tar.gz
#
#cd rabbitmq-c-0.5.0/
#
#autoreconf -i
#
#./configure --prefix=/usr/local/rabbitmq-c
#
#make
#
#make install
#安装rabbitmq-c依赖包
RUN cd ~ \
RUN yum -y install automake libtool libtoolize libsysfs
ADD rabbitmq-c-0.7.1.tar.gz /usr/local/src
WORKDIR /usr/local/src/rabbitmq-c-0.7.1
#RUN autoreconf -i
RUN ./configure --prefix=/usr/local/rabbitmq-c \
&& make && make install
#安装PHP扩展 amqp
#RUN yum -y install wget \
# cd ~ \
# && wget http://pecl.php.net/get/amqp-1.9.4.tgz \
# && tar zxvf amqp-1.9.4.tgz \
# && cd amqp-1.9.4 \
# && phpize \
# && ./configure --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c \
# && make && make install
#安装PHP扩展 amqp
ADD amqp-1.10.2.tgz /usr/local/src
WORKDIR /usr/local/src/amqp-1.10.2
RUN phpize
RUN ./configure --with-php-config=/usr/bin/php-config --with-amqp --with-librabbitmq-dir=/usr/local/rabbitmq-c/ \
&& make && make install
[上一节][Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb文章来源:https://www.toymoban.com/news/detail-741100.html
[下一节][Docker]六.Docker自动部署nodejs以及golang项目文章来源地址https://www.toymoban.com/news/detail-741100.html
到了这里,关于[Docker]五.Docker中Dockerfile详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!