本文以laravel項目爲例,給出docker在平時開發中的使用過程。php
使用composer安裝依賴html
FROM composer:1.8.6 as composer COPY . /app/ RUN cd /app \ && composer config -g repo.packagist composer https://packagist.laravel-china.org \ && composer install --no-suggest --ignore-platform-reqs \ --no-interaction --no-plugins \ --no-scripts --prefer-dist
部署fpmnginx
FROM php:7.2-fpm as fpm COPY . dockerlearn/ COPY --from=composer /app/vendor/ dockerlearn/vendor/
部署nginxlaravel
FROM nginx:1.17 as nginx ARG APP_PATH=/var/www/html/dockerlearn/ COPY dockerlearn.conf /etc/nginx/conf.d/ COPY --from=fpm ${APP_PATH}/public ${APP_PATH}/public
構建fpm imagegit
docker build -t dockerlearn/fpm --target fpm . ``
構建nginx imagedocker
docker build -t dockerlearn/nginx --target nginx .
運行fpmshell
docker run -itd --restart always --name fpm --network mynet dockerlearn/fpm
運行nginxapp
docker run -itd --restart always --name nginx --network mynet -p 80:80 dockerlearn/nginx
因爲Dockerfile的多階段構建特性,上述三步的指令整合在一塊兒以下所示。
composer
docker-compose.yml文件內容以下:ui
啓動服務指令:
docker-compose up -d
具體項目可參考laravel dodcker部署示例