Docker 列出本地鏡像php
docker images #列出全部鏡像,包含中間層鏡像 -a 列出本地全部的鏡像(含中間映像層,默認狀況下,過濾掉中間映像層) docker images -a # Docker 查看虛懸鏡像列表 -f 顯示知足條件的鏡像 docker images -f dangling=true
field | 釋意 |
---|---|
REPOSITORY | 表示鏡像的倉庫源 |
TAG | 鏡像的標籤 |
IMAGE ID | 鏡像ID |
CREATED | 鏡像建立時間 |
SIZE | 鏡像大小 |
虛懸鏡像html
這個鏡像本來是有鏡像名和標籤的,原來爲 mongo:3.2 ,隨着官方鏡像維護,發 布了新版本後,從新 docker pull mongo:3.2 時, mongo:3.2 這個鏡像名被 轉移到了新下載的鏡像身上,而舊的鏡像上的這個名稱則被取消,從而成爲了 。除了 docker pull 可能致使這種狀況, docker build 也一樣可 以致使這種現象。因爲新舊鏡像同名,舊鏡像名稱被取消,從而出現倉庫名、標籤 均爲 的鏡像。這類無標籤鏡像也被稱爲 虛懸鏡像(dangling image)mysql
刪除本地一個或多少鏡像linux
docker rmi 鏡像ID # -f 強制刪除 docker rmi -f 鏡像ID #刪除所有 docker rmi `docker images ‐q` #刪除全部虛懸鏡像 docker rmi $(docker images -q -f dangling=true)
標記本地鏡像,將其納入某一倉庫nginx
docker tag ubuntu:15.10 runoob/ubuntu:v3
使用 Dockerfile 建立鏡像c++
Dockerfile 構建git
vi Dockerfile # Base images 基礎鏡像 FROM centos #MAINTAINER 維護者信息 MAINTAINER test #ENV 設置環境變量 ENV PATH /usr/local/nginx/sbin:$PATH #ADD 文件放在當前目錄下,拷過去會自動解壓 ADD nginx-1.8.0.tar.gz /usr/local/ ADD epel-release-latest-7.noarch.rpm /usr/local/ #RUN 執行如下命令 RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all RUN useradd -s /sbin/nologin -M www #WORKDIR 至關於cd WORKDIR /usr/local/nginx-1.8.0 RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install # RUN echo "daemon off;" >> /etc/nginx.conf #EXPOSE 映射端口 EXPOSE 80 #CMD 運行如下命令 CMD ["nginx"]
注github
CMD ["./sbin/nginx","-g","daemon off;"]
/sbin/nginx
啓動nginx服務;
-g
: 設置配置文件外的全局指令,也就是啓動nginx時設置了daemon off
參數,
守護進程是指脫離終端而且在後臺運行的進程。這裏設置爲off,也就是不讓它在後臺運行。爲何咱們啓動nginx容器時不讓它在後臺運行呢,docker 容器默認會把容器內部第一個進程,也就是pid=1
的程序做爲docker容器是否正在運行的依據,若是docker 容器pid掛了,那麼docker容器便會直接退出。redis
構建鏡像sql
#指定本地文件構建 docker build -t test/lnmp:1.0 -f ./test/Dockerfile .
field | 釋意 |
---|---|
-t | 構建後的鏡像名稱 |
-f | 指定Dockerfiile文件位置 |
. | docker引擎鏡像構建過程當中的上下文環境的目錄 |
#使用URL構建 docker build github.com/creack/docker-firefox
將指定鏡像保存成 tar 歸檔文件
# -o 輸出到的文件 docker save -o test.tar test/ubuntu:v1
導入使用 docker save 命令導出的鏡像
# -i 指定導入的文件 docker load -i test.tar
從歸檔文件中建立鏡像
docker import test.tar test/ubuntu:v2
查看指定鏡像的建立歷史
ocker history test/ubuntu:v2
登錄到Docker Hub
docker login -u 用戶名 -p 密碼
退出Docker Hub
docker logout
從鏡像倉庫中拉取或者更新指定鏡像
docker pull ubuntu:18.04
將本地的鏡像上傳到鏡像倉庫,要先登錄到鏡像倉庫
docker push test/ubuntu:v2
從Docker Hub查找
# -s 列出收藏數不小於10的鏡像 docker search -s 10 nginx
field | 釋意 |
---|---|
NAME | 鏡像倉庫源的名稱 |
DESCRIPTION | 鏡像的描述 |
OFFICIAL | 是否docker官方發佈 |
列出容器
docker ps #列出全部容器 docker ps -a
field | 釋意 |
---|---|
CONTAINER ID | 表示容器 ID |
IMAGE | 表示運行的鏡像,鏡像和容器的關係,就像是面向對象程序設計中類和實例同樣,鏡像是靜態的定義,容器是運行時的實體 |
COMMAND | 表示表示容器啓動後運行的命令 注意pid=1進程是docker容器是否正在運行的依據 |
CREATED | 表示運行的時間 |
STATUS | created(已建立)restarting(重啓中)running(運行中)removing(遷移中)paused(暫停)exited(中止)dead(死亡) |
PORTS | 表示能夠經過指定的端口號來訪問 |
NAMES | 表示對鏡像容器的描述 |
獲取容器/鏡像的元數據
docker inspect test/ubuntu:v2 //獲取指定容器的ip docker inspect --format '{{ .NetworkSettings.IPAddress }}' 68f0d84be6ad //獲取全部容器ip docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
查看容器中運行的進程信息,支持 ps 命令參數。
docker top 容器ID #查看全部運行容器的進程信息 for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
將文件系統做爲一個tar歸檔文件導出到STDOUT。
# 將id爲a404c6c174a2的容器按日期保存爲tar文件 -o 將輸入內容寫到文件 docker export -o mysql-`date +%Y%m%d`.tar a404c6c174a2
獲取容器的日誌
# 跟蹤查看id爲a404c6c174a2的容器的日誌輸出 -f 跟蹤日誌輸出 docker logs -f a404c6c174a2 #查看容器id爲a404c6c174a2的容器從2019年10月30往後的最新10條日誌 docker logs --since="2019-10-30" --tail=10 a404c6c174a2
列出指定的容器的端口映射
docker port a404c6c174a2
建立一個新的容器並運行一個命令
# -i 以交互模式運行容器 -t 爲容器從新分配一個僞輸入終端 --name 爲容器指定一個名稱 -p 指定端口映射:主機(宿主)端口:容器端口 docker run -it --name mynginx -p 80:8080 nginx:latest /bin/bash # -d 後臺運行容器 主機的目錄/data 映射到容器的/data docker run -d --name mynginx -p 80:8080 -v /data:/data nginx:latest /bin/bash
field | 釋意 |
---|---|
-a stdin | 指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項 |
-d | 後臺運行容器,並返回容器ID |
-i | 以交互模式運行容器,一般與 -t 同時使用 |
-P | 隨機端口映射,容器內部端口隨機映射到主機的高端口 |
-p | 指定端口映射,格式爲:主機(宿主)端口:容器端口 |
-t | 爲容器從新分配一個僞輸入終端,一般與 -i 同時使用 |
--name mynginx | 爲容器指定一個名稱 |
--dns 8.8.8.8 | 指定容器使用的DNS服務器,默認和宿主一致 |
--dns-search example.com | 指定容器DNS搜索域名,默認和宿主一致 |
-h "mars" | 指定容器的hostname |
-e MYSQL_ROOT_PASSWORD=123456 | 設置環境變量 |
--env-file=[] | 從指定文件讀入環境變量 |
--cpuset="0-2" or --cpuset="0,1,2" | 綁定容器到指定CPU運行 |
-m | 設置容器使用內存最大值 |
--net="bridge" | 指定容器的網絡鏈接類型; host模式 容器內看到的網卡ip是宿主機上的ip;container模式 多個容器使用共同的網絡看到的ip是同樣的與宿主機不一樣;none模式 這種模式下不會配置任何網絡;bridge模式 宿主機上的全部容器會在同一個網段下,相互之間是能夠通訊的 |
--link=[] | 能夠用來連接2個容器,使得源容器(被連接的容器)和接收容器(主動去連接的容器)之間能夠互相通訊,解除了容器之間通訊對容器IP的依賴 |
--expose=[] | 開放一個端口或一組端口 |
--volume , -v | 綁定一個卷 |
/bin/bash | 這將在容器內啓動bash shell |
--privileged=true | 給容器特權,在掛載目錄後容器能夠訪問目錄如下的文件或者目錄 |
建立一個新的容器但不啓動它 用法同 docker run
docker create --name mynginx nginx:latest
啓動/中止/重啓
#啓動已被中止的容器mynginx docker start mynginx #中止運行中的容器mynginx docker stop mynginx #重啓容器mynginx docker restart mynginx
暫停/恢復 容器中全部的進程
#暫停數據庫容器db01提供服務 docker pause db01 #恢復數據庫容器db01提供服務 docker unpause db01
在運行的容器中執行命令
#在容器 mynginx 中開啓一個交互模式的終端 docker exec -it mynginx /bin/bash #在容器 mynginx 中以交互模式執行容器內 /root/start.sh 腳本 docker exec -it mynginx /bin/sh /root/test.sh
殺掉一個運行中的容器
# -s 向容器發送一個信號 docker kill -s KILL mynginx
刪除一個或多少容器
# 強制刪除容器db0一、db02 -f 經過SIGKILL信號強制刪除一個運行中的容器 docker rm -f db01 db02 # 移除容器nginx01對容器db01的鏈接,鏈接名db docker rm -l db # 刪除容器nginx01,並刪除容器掛載的數據卷 docker rm -v nginx01
從容器建立一個新的鏡像
# -a 提交的鏡像做者;-m 提交時的說明文字;-c 使用Dockerfile指令來建立鏡像;-p 在commit時,將容器暫停。 docker commit -a "youname" -m "test" a404c6c174a2 mynginx:v1
容器與主機之間的數據拷貝
# 將主機/www/test /www目錄下 docker cp /www/test 96f7f14e99ab:/www/ # 將主機/www/test目錄拷貝到容器96f7f14e99ab中,目錄重命名爲www docker cp /www/test 96f7f14e99ab:/www # 將容器96f7f14e99ab的/www目錄拷貝到主機的/test目錄中 docker cp 96f7f14e99ab:/www /root/test/
檢查容器裏文件結構的更改
docker diff mynginx
目錄 dnmp 根目錄執行docker run reids data conf redis.conf mysql data conf.d my.cnf php www php php.ini nginx conf.d nginx.conf logs mysql php-fpm
Docker 安裝redis
#使用 docker search 命令搜索存放在 Docker Hub 中的鏡像 docker search redis #選定須要pull到系統中的官方 redis 鏡像 docker pull redis:4.0 #啓動容器 docker run \ # 端口映射 宿主機:容器 -p 6379:6379 \ # 映射數據目錄 rw 爲讀寫 -v $PWD/redis/data:/data:rw \ # 掛載配置文件 ro 爲readonly -v $PWD/redis/conf/redis.conf:/etc/redis/redis.conf:ro \ # 給與一些權限 --privileged=true \ # 給容器起個名字 --name myredis \ # deamon 運行 服務使用指定的配置文件 -d redis:4.0 redis-server /etc/redis/redis.conf
Docker 安裝mysql
#使用 docker search 命令搜索存放在 Docker Hub 中的鏡像 docker search mysql #選定須要pull到系統中的官方 mysql 鏡像 docker pull mysql:5.7 #啓動容器 docker run \ --name mydb \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123456 \ -v $PWD/mysql/data:/var/lib/mysql:rw \ -v $PWD/logs/mysql:/var/lib/mysql-logs:rw \ -v $PWD/mysql/conf.d:/etc/mysql/conf.d:ro \ -d mysql:5.7
Docker 安裝php
#使用 docker search 命令搜索存放在 Docker Hub 中的鏡像 docker search php #選定須要pull到系統中的官方 php 鏡像 docker pull php:7.2-fpm #啓動容器 docker run \ -d -p 9000:9000 \ --name myphp \ -v $PWD/php/www:/var/www/html:rw \ -v $PWD/php/php/php.ini:/usr/local/etc/php/php.ini:ro \ # 報錯,先把php-fpm.conf文件複製過來,否則報錯 -v $PWD/php/php/php-fpm.conf:/usr/local/etc/php-fpm.conf:ro \ -v $PWD/logs/php-fpm:/var/log/php-fpm:rw \ --link mydb:mydb \ --link myredis:myredis \ --privileged=true \ php:7.2-fpm # redis 擴展沒有安裝 要下載安裝並php.ini中添加配置 # 擴展安裝 docker exec -it myphp /bin/bash apt-get update && apt-get install -y \ git \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-install zip \ && docker-php-ext-install pdo_mysql \ && docker-php-ext-install opcache \ && docker-php-ext-install mysqli \ && rm -r /var/lib/apt/lists/*
Docker 安裝nginx
#使用 docker search 命令搜索存放在 Docker Hub 中的鏡像 docker search nginx #選定須要pull到系統中的官方 nginx 鏡像 docker pull nginx #啓動容器 docker run \ --name mynginx \ -d -p 80:80 \ -v $PWD/php/www:/usr/share/nginx/html:ro \ -v $PWD/nginx/conf.d:/etc/nginx/conf.d:ro \ -v $PWD/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \ -v $PWD/logs/nginx:/var/log/nginx \ --link myphp:myphp \ -d nginx # 配置nginx dump -> nginx -> conf.d server { listen 80 default; index index.html index.htm; server_name localhost docker; root /var/www/html; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.html; } location ~ \.php { include fastcgi_params; fastcgi_pass myphp:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name; } }
目錄 dnmp data mysql redis logs mysql nginx php services mysql my.cnf Dockerfile nginx conf.d localhost.conf www.test.com.conf Dockerfile nginx.conf php Dockerfile php.ini php-fpm.conf redis Dockerfile redis.conf www localhost index.php www.test.com index.php docker-compose.yml
curl http://download.redis.io/redis-stable/redis.conf > $PWD/redis/conf/redis.conf
FROM redis:4.0 MAINTAINER you "you@qq.com" ENV TIME_ZOME=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TIME_ZOME /etc/localtime && echo $TIME_ZOME > /etc/timezone
FROM mysql:5.7 MAINTAINER you "you@qq.com" ENV TIME_ZOME=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TIME_ZOME /etc/localtime && echo $TIME_ZOME > /etc/timezone
[client] port = 3306 default-character-set = utf8mb4 [mysqld] user = mysql port = 3306 sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES default-storage-engine = InnoDB default-authentication-plugin = mysql_native_password character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect = 'SET NAMES utf8mb4' disable-log-bin skip-character-set-client-handshake explicit_defaults_for_timestamp slow_query_log long_query_time = 3 slow-query-log-file = /var/lib/mysql/mysql.slow.log log-error = /var/lib/mysql/mysql.error.log default-time-zone = '+8:00' [mysql] default-character-set = utf8mb4
FROM nginx:1.12 MAINTAINER you "you@qq.com" ENV TIME_ZOME=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TIME_ZOME /etc/localtime && echo $TIME_ZOME > /etc/timezone WORKDIR /www
user nginx; worker_processes 1; pid /var/run/nginx.pid; error_log /var/log/nginx/nginx.error.log warn; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /dev/null; #access_log /var/log/dnmp/nginx.access.log main; # hide verson string server_tokens off; sendfile on; #tcp_nopush on; client_max_body_size 100M; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
server { listen 80 default; server_name localhost; root /var/www/html; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.html; } location ~ \.php { include fastcgi_params; fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/localhost/$fastcgi_script_name; } }
server { listen 80; server_name www.test.com; root /var/www/html; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.html; } location ~ \.php { include fastcgi_params; fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/test/$fastcgi_script_name; } }
FROM php:7.2-fpm MAINTAINER you "you@qq.com" # 設置時區 ENV TIME_ZOME=Asia/Shanghai ENV COMPOSER_HOME=/tmp/composer RUN ln -snf /usr/share/zoneinfo/$TIME_ZOME /etc/localtime && echo $TIME_ZOME > /etc/timezone && \ export CFLAGS="$PHP_CFLAGS" CPPFLAGS="$PHP_CPPFLAGS" LDFLAGS="$PHP_LDFLAGS" && \ apt-get update && apt-get install -y --no-install-recommends \ libbz2-dev \ libenchant-dev \ libfreetype6-dev libjpeg62-turbo-dev libpng-dev \ libgmp-dev \ libxml2-dev libtidy-dev libxslt1-dev \ libzip-dev \ libsnmp-dev \ libpq-dev \ libpspell-dev \ librecode-dev \ firebird-dev \ freetds-dev \ libldap2-dev \ libc-client-dev libkrb5-dev \ firebird-dev \ libicu-dev \ libmcrypt-dev \ libmagickwand-dev \ zlib1g-dev libmemcached-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) bcmath calendar exif gettext sockets dba mysqli pcntl pdo_mysql shmop sysvmsg sysvsem sysvshm && \ docker-php-ext-install -j$(nproc) bz2 && \ docker-php-ext-install -j$(nproc) enchant && \ docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && docker-php-ext-install -j$(nproc) gd && \ docker-php-ext-install -j$(nproc) gmp && \ docker-php-ext-install -j$(nproc) soap wddx xmlrpc tidy xsl && \ docker-php-ext-install -j$(nproc) zip && \ docker-php-ext-install -j$(nproc) snmp && \ docker-php-ext-install -j$(nproc) pgsql pdo_pgsql && \ docker-php-ext-install -j$(nproc) pspell && \ docker-php-ext-install -j$(nproc) recode && \ docker-php-ext-install -j$(nproc) pdo_firebird && \ docker-php-ext-configure pdo_dblib --with-libdir=lib/x86_64-linux-gnu && docker-php-ext-install -j$(nproc) pdo_dblib && \ docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu && docker-php-ext-install -j$(nproc) ldap && \ docker-php-ext-configure imap --with-kerberos --with-imap-ssl && docker-php-ext-install -j$(nproc) imap && \ docker-php-ext-install -j$(nproc) interbase && \ docker-php-ext-install -j$(nproc) intl && \ pecl install mcrypt-1.0.1 && docker-php-ext-enable mcrypt && \ pecl install imagick-3.4.3 && docker-php-ext-enable imagick && \ pecl install memcached && docker-php-ext-enable memcached && \ pecl install redis-4.0.1 && docker-php-ext-enable redis && \ docker-php-ext-configure opcache --enable-opcache && docker-php-ext-install opcache && \ curl -o /usr/bin/composer https://mirrors.aliyun.com/composer/composer.phar && chmod +x /usr/bin/composer && \ usermod -u 1000 www-data && groupmod -g 1000 www-data WORKDIR /www
# bz2 擴展的安裝, 讀寫 bzip2(.bz2)壓縮文件 apt-get update && \ apt-get install -y --no-install-recommends libbz2-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) bz2 # enchant 擴展的安裝, 拼寫檢查庫 apt-get update && \ apt-get install -y --no-install-recommends libenchant-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) enchant # gd 擴展的安裝. 圖像處理 apt-get update && \ apt-get install -y --no-install-recommends libfreetype6-dev libjpeg62-turbo-dev libpng-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \ docker-php-ext-install -j$(nproc) gd # gmp 擴展的安裝, GMP apt-get update && \ apt-get install -y --no-install-recommends libgmp-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) gmp # soap wddx xmlrpc tidy xsl 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends libxml2-dev libtidy-dev libxslt1-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) soap wddx xmlrpc tidy xsl # zip 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends libzip-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) zip # snmp 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends libsnmp-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) snmp # pgsql, pdo_pgsql 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends libpq-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) pgsql pdo_pgsql # pspell 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends libpspell-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) pspell # recode 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends librecode-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) recode # pdo_firebird 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends firebird-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) pdo_firebird # pdo_dblib 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends freetds-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-configure pdo_dblib --with-libdir=lib/x86_64-linux-gnu && \ docker-php-ext-install -j$(nproc) pdo_dblib # ldap 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends libldap2-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu && \ docker-php-ext-install -j$(nproc) ldap # imap 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends libc-client-dev libkrb5-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \ docker-php-ext-install -j$(nproc) imap # interbase 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends firebird-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) interbase # intl 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends libicu-dev && \ rm -r /var/lib/apt/lists/* && \ docker-php-ext-install -j$(nproc) intl # mcrypt 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends libmcrypt-dev && \ rm -r /var/lib/apt/lists/* && \ pecl install mcrypt-1.0.1 && \ docker-php-ext-enable mcrypt # imagick 擴展的安裝 export CFLAGS="$PHP_CFLAGS" CPPFLAGS="$PHP_CPPFLAGS" LDFLAGS="$PHP_LDFLAGS" && \ apt-get update && \ apt-get install -y --no-install-recommends libmagickwand-dev && \ rm -rf /var/lib/apt/lists/* && \ pecl install imagick-3.4.3 && \ docker-php-ext-enable imagick # memcached 擴展的安裝 apt-get update && \ apt-get install -y --no-install-recommends zlib1g-dev libmemcached-dev && \ rm -r /var/lib/apt/lists/* && \ pecl install memcached && \ docker-php-ext-enable memcached # redis 擴展的安裝 pecl install redis-4.0.1 && docker-php-ext-enable redis # opcache 擴展的安裝 docker-php-ext-configure opcache --enable-opcache && docker-php-ext-install opcache
version: '3' services: php: build: ./services/php container_name: php ports: - "9000:9000" links: - mysql:mysql - redis:redis volumes: - ./www:/var/www/html:rw - ./services/php/php.ini:/usr/local/etc/php/php.ini:ro - ./services/php/php-fpm.conf:/usr/local/etc/php-fpm.conf:ro - ./logs/php:/var/log/php-fpm:rw restart: always command: php-fpm nginx: build: ./services/nginx container_name: nginx volumes: - ./www:/usr/share/nginx/html:rw - ./services/nginx/conf.d:/etc/nginx/conf.d:ro - ./services/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ./logs/nginx:/var/log/nginx ports: - "80:80" - "443:443" links: - php:php restart: always command: nginx -g 'daemon off;' mysql: build: ./services/mysql container_name: mysql ports: - "3306:3306" volumes: - ./data/mysql:/var/lib/mysql:rw - ./logs/mysql:/var/lib/mysql-logs:rw - ./services/mysql/my.cnf:/etc/mysql/my.cnf:ro environment: MYSQL_ROOT_PASSWORD: 123456 restart: always command: "--character-set-server=utf8mb4" redis: build: ./services/redis container_name: redis ports: - "6379:6379" volumes: - ./data/redis:/data - ./services/redis/redis.conf:/usr/local/etc/redis/redis.conf restart: always
docker-compose up # 建立而且啓動全部容器 docker-compose up -d # 建立而且後臺運行方式啓動全部容器 docker-compose up nginx php mysql # 建立而且啓動nginx、php、mysql的多個容器 docker-compose up -d nginx php mysql # 建立而且已後臺運行的方式啓動nginx、php、mysql容器 docker-compose start php # 啓動服務 docker-compose stop php # 中止服務 docker-compose restart php # 重啓服務 docker-compose build php # 構建或者從新構建服務 docker-compose rm php # 刪除而且中止php容器 docker-compose down # 中止並刪除容器,網絡,圖像和掛載卷