Issue
Я запускаю прокси-сервер синхронизации браузера через gulp внутри контейнера настройки Apache.Все работает нормально, когда я запускаю сервер вручную (запускаю контейнер, присоединяю оболочку, запускаю скрипт gulp через присоединенную оболочку), и я могу подключиться к серверу по нужному порту.Но когда я приказываю docker выполнить для меня команду gulp
(либо через CMD
в dockerfile, либо через command
в docker-compose), сервер запускается успешно, но он недоступен и время ожидания истекло.Вывод в shell такой же:
apache-browsersync_1 | [18:35:01] Using gulpfile /var/www/html/gulpfile.js
apache-browsersync_1 | [18:35:01] Starting 'default'...
apache-browsersync_1 | [Browsersync] Proxying: http://localhost:8080
apache-browsersync_1 | [Browsersync] Access URLs:
apache-browsersync_1 | ----------------------------------
apache-browsersync_1 | Local: http://localhost:80
apache-browsersync_1 | External: http://172.21.0.2:80
apache-browsersync_1 | ----------------------------------
apache-browsersync_1 | UI: http://localhost:3001
apache-browsersync_1 | UI External: http://localhost:3001
apache-browsersync_1 | ----------------------------------
apache-browsersync_1 | [Browsersync] Couldn't open browser (if you are using BrowserSync in a headless environment, you might want to set the open option to false)
Я уже пытался использовать command
в docker-compose и CMD
, RUN
и ENTRYPOINT
в моем dockerfile и даже запустилглоток с задержкой в 1 минуту после запуска контейнера.Тем не менее, тот же результат, сервер успешно запускается, но время ожидания истекло.
Кажется, что есть разница между командой, которая выполняется вручную через подключенную оболочку, и командой, вызываемой из файла dockerfile.
Это мои настройки:
docker-compose:
version: "3"
services:
...
apache-browsersync:
build:
context: .
dockerfile: apache.dockerfile
volumes:
- .:/var/www/html/
ports:
- 80:80
...
dockerfile:
FROM php:apache
# change apache port from 80 to 8080
RUN sed -i 's/80/8080/g' /etc/apache2/ports.conf
# install node
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN apt-get install -y nodejs
# install gulp
RUN npm install gulp-cli -g
# copy project data
COPY . /var/www/html
# install dependencies
RUN npm install
# start gulp
CMD gulp
gulp script:
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
function defaultTask() {
browserSync.init({
proxy: 'localhost:8080',
port: 80
});
}
exports.default = defaultTask;