码头工人从Ubuntu映像访问php映像

时间:2018-08-24 05:22:11

标签: docker docker-compose

我正在尝试基于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
#

我做错了什么?还是我失去了一些重要的概念?

1 个答案:

答案 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,则不需要两个