Я хотел попробовать Docker как инструмент для локальной разработки - я использовал docker-compose
для ускорения 3-х контейнеров: один для базы данных (postgres), front-end (запуск webpack и sass узла в режиме наблюдения) и backend (Elixir / Phoenix).
Все отлично работает, за исключением того, что когда я нажимаю localhost:4000
, загрузка страницы очень медленная - 10-15 секунд, чтобы получить страницу входа, которая статична.
Я проверил журналы с docker-compose
и время отклика сервера, как обычно, быстрое, что для меня означает, что что-то замедляет соединение с контейнером.
Когда я запускал сервер непосредственно в Терминалеопять же, все довольно быстро, например, для загрузки одной и той же страницы требуется 1 с.
Я новичок в Docker, поэтому я подозреваю, что, возможно, что-то упущено из-за конфигурации.Любые идеи приветствуются.Спасибо!
Конфигурация
docker-compose.yml
version: "3.6"
services:
postgres:
container_name: postgres
image: postgres:11.0-alpine
ports:
- 5432:5432
volumes:
- postgres:/var/lib/postgresql/data
front-end:
container_name: front-end
env_file:
- "docker/dev/.env"
build:
context: "."
dockerfile: "docker/dev/Dockerfile.front-end"
volumes:
- .:/app
- node_modules:/app/node_modules
- static:/app/priv/static
command: npm run dev
backend:
container_name: backend
build:
context: "."
dockerfile: "docker/dev/Dockerfile.backend"
env_file:
- "docker/dev/.env"
depends_on:
- postgres
- front-end
ports:
- 4000:4000
stdin_open: true
tty: true
volumes:
- .:/app
- elixir-deps:/app/deps
- static:/app/priv/static
command: iex -S mix phx.server
volumes:
postgres:
elixir-deps:
node_modules:
static:
driver_opts:
type: "tmpfs"
device: "tmpfs"
Dockerfile.front-end
FROM node:8.10-alpine
WORKDIR /app
COPY package.json ./
COPY package-lock.json ./
RUN npm install
COPY . .
Dockerfile.backend
FROM elixir:1.8-alpine
RUN apk update && apk add build-base inotify-tools postgresql-dev
WORKDIR /app
COPY mix.exs ./
COPY mix.lock ./
RUN mix local.hex --force && mix local.rebar --force \
&& mix deps.get && mix deps.compile
COPY . .
EXPOSE 4000
Версии и другая информация:
MacOS Mojave 10.14.3
Docker Desktop 2.0.0.3 (Engine 18.09.2, Compose: 1.23.2)
MacBook Pro 13" (Early 2015, 16GB RAM/3.1GHz Core i7)