Docker 容器在 Ctrl +C 后被杀死

use*_*828 2 ubuntu docker docker-compose

我有一个 nginx 和 php-fpm 容器。当我在项目中的 php 容器中并执行任何需要时间的命令(如 vendor/bin/behat 或 composer update)时,我单击 CTRL+C。我从容器中弹出。我不知道为什么.. 当我点击 CTRL+C 而不执行命令时,我没有问题。

任何的想法 ?

这是我的 docker-compose.yml 文件:

版本:'3'

服务:
    nginx:
        图片:nginx:最新
        重启:总是
        端口:
            - “80:80”
        卷:
            - ./nginx/conf:/etc/nginx/custom_conf
            - ./nginx/hosts:/etc/nginx/conf.d/
            - ./nginx/nginx.conf:/etc/nginx/nginx.conf
            - ./logs/nginx:/var/log/nginx
            - ..:/var/www
        网络:
            我的网络:
                ipv4_address: 10.5.0.31

    网络:
        建造: 。
        重启:总是
        端口:
            - “9000:9000”
            - “5001:5001”
        卷:
            - ./php/php.ini:/usr/local/etc/php/conf.d/30-php.ini
            - ./php/app2.conf:/usr/local/etc/php/conf.d/app2.conf
            - ./keys/:/var/www/.ssh
            - ./custom-hosts:/etc/custom-hosts
            - ..:/var/www
            - ./supervisor/supervisord.conf:/etc/supervisor/supervisord.conf
            - ./supervisor/conf/:/etc/supervisor/conf.d/
        网络:
            我的网络:
                ipv4_address: 10.5.0.20
        tty: 真的

    D b:
        构建:mysql
        重启:总是
        端口:
            - “3306:3306”
        卷:
            - ./logs/mysql:/var/log/mysqld.log
            - ./mysql/sql:/var/dumps
            - 数据:/var/lib/mysql
        环境:
            - MYSQL_ROOT_PASSWORD=root
            - MYSQL_USER=root
            - MYSQL_PASSWORD=root
        网络:
            我的网络:
                ipv4_address: 10.5.0.23

卷:
    数据:
        司机:本地

网络:
    我的网络:
        司机:桥
        ipam:
            配置:
                - 子网:10.5.0.0/16

我的 php-fpm Dockerfile:

从 php:7.1-fpm

工作目录 /var/www

运行 apt-get update && apt-get install -y wget git vim sudo unzip apt-utils
运行 apt-get install -y gnupg
运行 apt-get 更新


###作曲家
运行 cd /usr/src
运行 curl -sS https://getcomposer.org/installer | 须藤 php -- --install-dir=/usr/local/bin --filename=composer

# xdebug
运行 pecl install xdebug-2.5.0 \
    && docker-php-ext-enable xdebug

### php 扩展
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf 集选择
运行 apt-get clean && apt-get update && apt-get -y --fix-missing install libfreetype6-dev \
    libjpeg62-turbo-dev \
    libmcrypt-dev \
    libpng-dev \
    libicu-dev \
    libxml2-dev \
    g++ \
    zlib1g-dev

运行 docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
运行 docker-php-ext-install -j$(nproc) gd
运行 docker-php-ext-install exif
运行 docker-php-ext-install pdo_mysql
运行 docker-php-ext-configure intl
运行 docker-php-ext-install intl
运行 apt-get install -y libzip-dev
运行 docker-php-ext-install zip

### 主要的
运行 usermod -u 1000 www-data
运行 chmod -R 777 /var/www/
运行 chown -R www-data:www-data /var/www
添加 bash_profile /var/www/.bash_profile
添加 script.sh /usr/bin/script.sh
运行 chmod 755 /usr/bin/script.sh

CMD ["bin/bash"]

入口点 ["script.sh"]

曝光 9000

还有我的 script.sh :

#!/bin/bash

php-fpm &
echo "Serveur de de developpement Cartesia Education"

cat /etc/custom-hosts >> /etc/hosts

dpkg-reconfigure -f 非交互式 tzdata
echo "LC_TIME=fr_FR.utf8" >> /etc/environment

服务主管开始

exec su -l www-data -s /bin/bash

感谢您的帮助。

Che*_*ech 6

您是否尝试过以分离模式(-d 选项)运行容器?

> docker run -d [CONTAINER-NAME]
Run Code Online (Sandbox Code Playgroud)

这将导致容器在后台运行。您仍然可以通过 SSH 进入正在运行的容器:

> docker exec -it [CONTAINER-NAME] bash
Run Code Online (Sandbox Code Playgroud)

退出容器一次不会终止它。