Вы можете разделить два своих контейнера следующим образом:
app.dockerfile:
FROM php:7-cli-alpine
RUN apk --update add wget \
curl \
git \
grep \
build-base \
libmemcached-dev \
libmcrypt-dev \
libxml2-dev \
imagemagick-dev \
pcre-dev \
libtool \
make \
autoconf \
g++ \
cyrus-sasl-dev \
libgsasl-dev
RUN docker-php-ext-install mysqli pdo pdo_mysql tokenizer xml
RUN pecl channel-update pecl.php.net \
&& pecl install memcached \
&& pecl install imagick \
&& pecl install mcrypt-1.0.3 \
&& docker-php-ext-enable memcached \
&& docker-php-ext-enable imagick \
&& docker-php-ext-enable mcrypt
RUN rm /var/cache/apk/* && \
mkdir -p /var/www
ENTRYPOINT ["/usr/bin/php", "/var/www/html/websocket-service/artisan", "websockets:serve"]
Я изменился вверху файла php:7-fpm-alpine
, потому что в в этом случае вам просто нужно запустить команду, а не запускать сервер php -fpm, который обслуживает веб-запросы
web.dockerfile:
FROM php:7-fpm-alpine
RUN apk --update add wget \
curl \
git \
grep \
build-base \
libmemcached-dev \
libmcrypt-dev \
libxml2-dev \
imagemagick-dev \
pcre-dev \
libtool \
make \
autoconf \
g++ \
cyrus-sasl-dev \
libgsasl-dev
RUN docker-php-ext-install mysqli pdo pdo_mysql tokenizer xml
RUN pecl channel-update pecl.php.net \
&& pecl install memcached \
&& pecl install imagick \
&& pecl install mcrypt-1.0.3 \
&& docker-php-ext-enable memcached \
&& docker-php-ext-enable imagick \
&& docker-php-ext-enable mcrypt
RUN rm /var/cache/apk/* && \
mkdir -p /var/www
Здесь вы можете указать директиву ENTRYPOINT
, которая устанавливается базовым контейнером php:7-fpm-alpine
[EDIT 1]
Вы также можете обратиться к моему старому школьному проекту : ExoSuite / exosuite- docker
, а точнее: docker -compose.dev.yml в этом docker -композитном файле Laravel Horizon
запускается его контейнером laravel -artisan , поэтому этот файл может помочь вам в качестве примера для вашей проблемы.
[EDIT 2]
Если вы хотите, чтобы ваш порт 6001
был доступен вне контейнера app
, измените директиву вашего приложения следующим образом:
app:
build:
context: ./
dockerfile: app.dockerfile
working_dir: /var/www/html
volumes:
- ./:/var/www/html
ports:
- "6001:6001"
environment:
- DB_PORT=${DB_PORT}
- DB_HOST=${DB_HOST}