我正在尝试创建我的第一个基于 docker 的开发环境。
我的主机是视窗 10 我需要在单独的图像中创建堆栈 Ubuntu:14.04 + php。
Dockerfile forubuntu:FROM ubuntu:14.04
Dockerfile forphp:FROM php:5.6-fpm
就这么简单。此时没有任何其他参数。
docker-compose.yml:
version: '3.7'
services:
os:
build:
context: .
dockerfile: .docker/ubuntu/Dockerfile
container_name: ubuntu
tty: true
links:
- php
php:
build: ./.docker/php
container_name: php
然后docker-compose up --build
结果是:
Building os
Step 1/2 : FROM ubuntu:14.04
---> 971bb384a50a
Step 2/2 : LABEL maintainer="Andrey Kryukov"
---> Using cache
---> 3d71726444ee
Successfully built 3d71726444ee
Successfully tagged nnrservice_os:latest
Building php
Step 1/2 : FROM php:5.6-fpm
---> 8d3dc6499e61
Step 2/2 : LABEL maintainer="Andrey Kryukov"
---> Using cache
---> b6fc0c83131b
Successfully built b6fc0c83131b
Successfully tagged nnrservice_php:latest
Starting ubuntu ... done
Starting php ... done
Attaching to ubuntu, php
php | [24-Aug-2018 05:14:01] NOTICE: fpm is running, pid 1
php | [24-Aug-2018 05:14:01] NOTICE: ready to handle connections
然后docker-compose exec os /bin/sh
结果是:
#
没有任何错误。所以我希望 php 在我的控制台中可用。但是没有!
# php -v
/bin/sh: 1: php: not found
#
我做错了什么?或者也许我失去了一些重要的概念?
docker-compose exec os /bin/sh
您正在连接到os
容器并尝试执行php
,该PHP
容器中。显然,这是行不通的,因为操作系统容器只有基本实用程序,而不是PHP容器中的PHP库和PHP-FPM应用程序,如
php | [24-Aug-2018 05:14:01] NOTICE: fpm is running, pid 1
php | [24-Aug-2018 05:14:01] NOTICE: ready to handle connection
为什么需要操作系统容器和 PHP 容器?这违背了目的。PHP 容器将具有 PHP 的基本操作系统 + 所需的应用程序/库。你不需要两个,如果你的目标是运行PHP。