docker

docker compose volumes Не копируются файлы, не отображаются

Описание проблемы

Есть докерфайл:

FROM node:18.15-alpine
#WORKDIR /var/www
# RUN npm ci
# CMD [ "npm", "start" ]

CMD node -i

и композ:

version: '3.9'
services:
  frontend:
    build: 
        context: .
        dockerfile: Dockerfile
    container_name: web_main
    working_dir: /var/www
    volumes:
      - '..:/var/www'

-- выполняем

docker Контейнер когда завершается, а когда нет. Почему выходит сразу после создания

Чтобы контейнер не завершался, не должен завершаться основной его процесс (запускается, напр. с помощью команды CMD), поэтому команды типа

Для лучшего понимания можно позапускать такой контейнер с разными опциями

docker create-react-app Пример docker-compose для React

Возможный вариант:

docker-compose.yml:

version: '3.9'
services:
  frontend:
    working_dir: /var/www
    volumes:
      - '.:/var/www'
    ports:
      - "3000:3000"

Dockerfile:

FROM node:18.15-alpine
WORKDIR /var/www
COPY package.json ./
COPY package-lock.json ./
RUN npm ci
COPY ../ .
CMD npm start

Проблемы и решения для node_modules/

Всего есть две задачи/проблемы:

docker proxy Поддомены/домены для разных контейнеров

Пример конфигурации для nginxproxy/nginx-proxy:

docker-compose.yml с конфигом для прокси:

version: '3.9'
services:
  nginx-proxy:
    container_name: nginx-proxy-double-test-proxy
    image: nginxproxy/nginx-proxy
    ports:
      - "8888:80"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
    networks:
      - proxynet

networks:
  proxynet:
    name: custom_network

Отдельный docker-compose-app.yml для приложения, например:

xdebug Отладка запроса из другого docker контейнера (не с того, где IDE)

Проблема

Проблема заключается в том, что при запросе с GET-параметром (?XDEBUG_SESSION_START) из от одного микросервиса к другому (оба в разных контейнерах), сессия отладки в IDE на основной ОС не начинается (хотя IDE и ожидает соединения из контейнера).

При этом если делать тот же запрос (напрямую в контейнер микросервиса), напр. из postman-а - отладка работает нормально.

Конфиг xdebug-а внутри контейнера:

alpine docker nginx bad gateway 502 Переодически возникает ошибка

Возможный путь решения

  1. Откройте файлы лога ошибок и доступа nginx (напр. для alpine-образа это делается так, там они перенаправлены) -- это самый быстрый и стандартный путь чтобы понять что происходит
  2. Далее решаем проблему, в моем случае это это была ошибка ""upstream sent too big header while reading response header from upstream""

xdebug vscode docker Запуск и отладка из командной строки, терминала. Пример launch.json

Видео-обзор конфигурации ниже для запуска консольного скрипта: https://youtu.be/Br9l8yXNHZE

Конфиг xdebug

По аналогии с обычной установкой (см. наш пример для линукса) в xdebug.ini укажем 5 опций:

zend_extension=xdebug
xdebug.mode=debug
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.idekey="netbeans-xdebug"

где:

docker alpine Псевдонимы команд для терминалов alias (shell/bash)

Разберемся как создавать псевдонимы команд в alpine-контейнере, просто взять и написать в докерфайле:

RUN echo 'alias cept="./vendor/bin/codecept"' >> ~/.bashrc

-- по-умолчанию здесь не получится, дело в том, что:

  • 1) alpine linux не использует bash по умолчанию, а использует shell
  • 2) дело в том, как именно вы запускаете командную оболочку после старта контейнера

Действуем так:

Pages

Subscribe to RSS - docker