我正在尝试基于docker创建我的第一个开发环境。
我的主机是Windows 10 我需要在单独的映像中创建堆栈Ubuntu:14.04 + php。
用于ubuntu的Dockerfile: 来自ubuntu:14.04
适用于php的Dockerfile: 来自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
#
我做错了什么?还是我失去了一些重要的概念?
答案 0 :(得分:1)
docker-compose exec os /bin/sh
您正在连接到os
容器并尝试执行php
容器中的PHP
。显然,这是行不通的,因为os容器仅具有基本utils,而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
为什么需要OS容器和PHP容器?达不到目的。 php容器将具有基本的OS + PHP所需的应用程序/库。如果您的目标是仅运行PHP,则不需要两个