Ближе к национальному дню я повернулся, чтобы повозиться с докером . Поскольку я занимался разработкой PHP, я начал сначала с окружающей среды.
Первоначально предполагалось создать PHP + MySQL + nginx + redis, но поскольку использовались MySQL и redis компании, был построен только PHP + nginx, потому что моя операционная система win10, и следующие операции выполняются в win.
Сначала вытяните изображение. Конечно, вы можете написать свой собственный файл dockerfile, чтобы создать свой собственный образ. Сначала извлеките изображение nginx:
docker pull nginx
По умолчанию будет извлечено последнее изображение. Вы можете использовать изображения docker для просмотра существующего изображения после завершения.
Затем установите PHP. Так же, как и изображение nginx, вы можете непосредственно извлечь изображение для завершения операции. Извлеченный PHP-образ имеет только частичное расширение. Расширение, которое вам нужно, должно войти в контейнер для установки. Чиновник дает три способа установки расширения PHP:
docker-php-ext-install pecl install name-xxx Curl source installation
Но есть проблема с запуском PHP таким образом, то есть повторно созданный образ или повторно запущенный контейнер не является расширением, которое было установлено в прошлый раз, поэтому его необходимо переустановить. Поэтому здесь мы используем dockerfile для создания вашего собственного образа PHP.
Сначала создайте каталог, а затем создайте файл dockerfile в этом каталоге. Содержимое файла выглядит следующим образом:
FROM php:7.2-fpm AS php7.2 RUN docker-php-ext-install mysqli pdo pdo_mysql \ && pecl install redis-5.0.0 \ && pecl install yaf-3.0.8 \ && pecl install xdebug-2.7.2 \ && docker-php-ext-enable redis xdebug yaf \ && cd /usr/local/etc/php \ && touch php.ini
Затем откройте CMD в текущем каталоге и выполните:
docker build -t php7.2 .
Затем мы начнем создавать ваш собственный PHP-образ. Приведенный выше файл dockerfile относительно прост. Только на основе образа PHP: 7.2-fpm мы используем docker PHP ext install и PECL для установки расширений mysqli, PDO, redis, YAF и Xdebug и создаем файл php.ini для последующего монтирования локального файла php.ini.
Dockerfile также может выполнять более сложные операции. В образе Ubuntu мы можем запускать run run для выполнения команд терминала для установки PHP и nginx, а также запускать службы nginx и PHP FPM. Таким образом, мы можем установить PHP + nginx в одном образе одновременно, но здесь мы создаем только самый простой образ PHP.
Когда это будет сделано, у нас будет два зеркала.
Теперь нам нужно запустить эти два образа и смонтировать локальный рабочий каталог и файл конфигурации в соответствующий каталог контейнера. Однако довольно хлопотно запускать два образа и каждый раз монтировать соответствующий файл, и IP-адрес будет каждый раз меняться, поэтому нам нужно изменить конфигурацию nginx, поэтому лучше установить интегрированную среду напрямую…
Поэтому здесь мы используем docker compose для запуска этих двух парней:
version: '2' services: nginx: container_name: "nginx" image: nginx ports: - "80:80" depends_on: - php volumes: - "F:/phpstudy/PHPTutorial/nginx/conf.d:/etc/nginx/conf.d" - "F:/phpstudy/PHPTutorial/WWW:/usr/www/html" - "F:/logs/error.log:/var/log/nginx/error.log" - "F:/logs/access.log:/var/log/nginx/access.log" networks: - app_net php: image: php7.2:latest ports: - "9000:9000" volumes: - "F:/phpstudy/PHPTutorial/WWW:/var/www/html" - "F:/lnmp/php.ini:/usr/local/etc/php/php.ini" networks: - app_net container_name: "php" networks: app_net: ipam: driver: default config: - subnet: 10.10.0.0/16
Выше приведен наш файл docker-compose.yml. С помощью этого файла и команды docker compose можно быстро развернуть распределенные приложения. Этот файл также только что помещен в каталог dockerfile. В файле указываются файлы, которые будут смонтированы, и сопоставленные порты, так что вам не нужно каждый раз вручную вводить и выполнять команду.
docker-compose up -d
Эта команда войдет в фоновый режим после выполнения. Рекомендуется не – D в конце первой установки:
docker-compose up
Таким образом, вы можете увидеть некоторые проблемы, о которых сообщается во время выполнения контейнера, такие как сбой загрузки расширения.
Рекомендую: https://docs.docker.com/