Docker 如何从ubuntu容器访问php和composer服务

Docker 如何从ubuntu容器访问php和composer服务,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我需要一个运行php和composer的ubuntu容器。从docker文档来看,Compose似乎提供了一种在多个服务旁边运行容器的方法,下面是docker文档中提到Compose的一个片段 Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用YAML文件来配置应用程序的服务。然后,只需一个命令,就可以从配置中创建并启动所有服务 这是我的docker-compose.yml文件 version: '3' services: web: i

我需要一个运行php和composer的ubuntu容器。从docker文档来看,Compose似乎提供了一种在多个服务旁边运行容器的方法,下面是docker文档中提到Compose的一个片段

Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用YAML文件来配置应用程序的服务。然后,只需一个命令,就可以从配置中创建并启动所有服务

这是我的
docker-compose.yml文件

version: '3'
services:
  web:
    image: ubuntu
    links: 
      - db
      - kompoza
      - web_server
  db:
    image: mysql
    ports:
    - "3309:3306"
    environment:
    - MYSQL_ROOT_PASSWORD=password
    - MYSQL_USER=user
    - MYSQL_PASSWORD=password
    - MYSQL_DATABASE=demodb
  kompoza:
    image: composer
  web_server:
    image: php
运行
docker compose up
后,所有服务都会启动,
kompoza
web\u服务器
服务会立即退出,并显示
错误代码0

我需要能够在ubuntu容器中运行
php--version
composer--version

我已经知道,我可以使用
Dockerfile
将我需要的所有软件安装在一个容器中

FROM ubuntu:latest
ARG DEBIAN_FRONTEND=noninteractive
ENV TERM=xterm
RUN apt-get update

RUN apt-get install -y curl wget php

# Install Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
但是我更喜欢用
服务
的方式来做,因为我相信定义服务会给我更多的控制权


我如何做到这一点?还有一个问题,为什么这两个服务退出了,而mysql没有退出?

仅仅运行一个简单的
php
解释器并没有什么作用;正如你所说,它将立即退出。您需要编写一个自定义的
Dockerfile
——它可以是来自php的
复制应用程序代码中的
,然后通过Compose运行生成的图像。@DavidMaze您所说的不清楚。如果你能给我一个更详细的解释,我会很有帮助的。