Не удается связаться с прокси-сервером при запуске через dockerfile - PullRequest
0 голосов
/ 27 июня 2019

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;

1 Ответ

0 голосов
/ 29 июня 2019

Apache останавливается при запуске gulp в одном и том же контейнере, поэтому я разделил обе службы на разные контейнеры и сослался на сервер apache через имя контейнера docker-compose в моем файле gulp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...