Docker-compose 不会让基础容器保持运行

我有一个 Dockerfile,它构建 Debian 映像并安装 Apache、Php、MySql。


一般来说,如果我运行 docker 命令:


docker build --tag my-project-image:2.0 .

进而


docker run -dit --name my-project-container \ 

    --mount type=bind,source=$(pwd),destination=/var/www/html \

    -p 80:80 --rm my-project-image:2.0


我的容器保持运行,并且我开发所需的所有服务都已启动并运行,因此没有问题。


我尝试将此配置移至 docker-compose 中,但遇到了奇怪的麻烦。我相信我犯了一个非常常见的错误,但我搜索了很多,尝试了很多东西,但无法使其发挥作用。


简而言之,当我运行docker-compose up构建的映像时,它会创建一个容器,运行所有脚本,并且它会立即存在。问题是我想保持该容器运行,因为我在那里有 Apache 和 MySQL 等服务。


我有两个服务,一个是用于 apache、MySQL 和 PHP 的lamp,另一个是用于运行 npm 脚本的Node 。


不幸的是,节点容器保持正常运行,但灯立即关闭。


这是我的 Dockerfile


FROM debian:latest

ENV DOC_ROOT=/var/www/html

WORKDIR ${DOC_ROOT}

RUN apt-get update

RUN apt-get --assume-yes upgrade

RUN apt-get --assume-yes install apache2

RUN apt-get --assume-yes install curl php-curl

RUN apt-get --assume-yes install php

RUN apt-get --assume-yes install php-mysql

RUN apt-get --assume-yes install composer

RUN apt-get --assume-yes install php-xdebug

RUN apt-get --assume-yes install default-mysql-server

RUN a2enmod rewrite

COPY ./ ${DOC_ROOT}

RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf

COPY config/000-default.conf /etc/apache2/sites-available/


EXPOSE 80

这是我的docker-compose.yaml文件内容


version: "3.2"

services:

  lamp:

    container_name: lamp-stack

    build: .

    ports:

      - 80:80

    volumes:

    - .:/var/www/html

    command: >

      /bin/sh -c "service apache2 start && \

        service mysql start && \

        mysql < migrations/migrations.sql && \

        mysql < migrations/development.sql && \

        bash"

  node:

    container_name: node-builder

    image: node:12-alpine3.9

    depends_on:

      - lamp

    working_dir: /var/www/html

    volumes:

    - .:/var/www/html

    command: >

      /bin/ash -c "npm run build:dev > ./.logs/npm/npm-build.log && \

        npm run watch:sass > ./.logs/npm/sass-watch.log"


繁华开满天机
浏览 117回答 1
1回答

慕桂英4014372

尝试在 docker-compose 中添加这些行:stdin_open: true # equivalent of -itty: true&nbsp; &nbsp; &nbsp; &nbsp; # equivalent of -t
打开App,查看更多内容
随时随地看视频慕课网APP