@dasauser
Пишу на PHP

Как правильно подключать виртуальные хосты в docker/apache2?

Осваиваю докер, хочу поднять параллельно нгинкс для отдельного приложения ,и апач для битрикса-коробки на локальной машине.
Нгинкс настроил, хосты подключаются, все работает.
А вот с апачем возникли проблемы.
Я не понимаю принцип подключения апачем хостов. Если у нгинкс все ок, поменял что-то в хосте, ребутнул контейнер и радуешься, что все работает, то у апача какая-то хрень уже на этапе подключения хостов.
Я пробовал подключать через сборку докерфайла, но мне кидает такую ошибку (нет такой директории, но как мне тогда обратиться к папке с хостами?):
Building apache
Step 1/6 : FROM httpd:latest
 ---> 19459a872194
Step 2/6 : COPY ./hosts/apache2/sites-available/ /etc/apache2/sites-available
ERROR: Service 'apache' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder011831039/hosts/apache2/sites-available: no such file or directory


Сам докерфайл апача:
FROM httpd:latest
COPY ./hosts/apache2/sites-available/ /etc/apache2/sites-available
RUN a2dissite /etc/apache2/sites-available/000-default.conf
RUN a2dissite /etc/apache2/sites-available/default-ssl.conf
RUN a2ensite /etc/apache2/sites-available/bitrix.conf
RUN service apache2 restart #я не знаю, нужно ли перезапускать в контейнере сервис...


Пробовал еще так:
FROM httpd:latest

# COPY ./hosts/apache2/sites-available/ /etc/apache2/sites-available

RUN a2dissite ./hosts/apache2/sites-available/000-default.conf
RUN a2dissite ./hosts/apache2/sites-available/default-ssl.conf
RUN a2ensite ./hosts/apache2/sites-available/bitrix.conf

# RUN a2dissite /etc/apache2/sites-available/000-default.conf
# RUN a2dissite /etc/apache2/sites-available/default-ssl.conf
# RUN a2ensite /etc/apache2/sites-available/bitrix.conf

RUN service apache2 restart


Ошибка (нет команды? это как?):
Building apache
Step 1/5 : FROM httpd:latest
 ---> 19459a872194
Step 2/5 : RUN a2dissite ./hosts/apache2/sites-available/000-default.conf
 ---> Running in 63d83aa87984
/bin/sh: 1: a2dissite: not found
ERROR: Service 'apache' failed to build: The command '/bin/sh -c a2dissite ./hosts/apache2/sites-available/000-default.conf' returned a non-zero code: 127


docker-compose.yml:
version: "3.7"
services:

  apache:
    container_name: apache
    image: httpd:latest
    ports:
      - "732:732"
    volumes:
      - ../../www:/var/www     
      - ./hosts/apache2:/usr/local/apache2/conf
      - ./logs/apache2:/usr/local/apache2/logs
    # command:
    #   - a2dissite /etc/apache2/sites-available/000-default.conf
    #   - a2dissite /etc/apache2/sites-available/default-ssl.conf
    #   - a2ensite /etc/apache2/sites-available/bitrix.conf
    #   - service apache2 restart
    depends_on:
      - php

  nginx:
    container_name: nginx
    image: nginx:latest
    ports:
      - "740:740"
    volumes:
      - ../../www:/var/www
      - ./hosts/nginx:/etc/nginx/conf.d
      - ./logs/nginx:/var/log/nginx
    depends_on:
      - php

  php:
    container_name: php
    build: ./images/php
    volumes:
      - ../../www:/var/www
    links:
       - mysql:db

  mysql:
    container_name: mysql
    image: mysql
    ports: 
      - "3306:3306"
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root

  adminer:
    image: adminer
    restart: always
    ports:
      - "8080:8080"
    links:
      - mysql:db

Что я делаю не так?
  • Вопрос задан
  • 703 просмотра
Пригласить эксперта
Ответы на вопрос 2
@q2digger
никого не трогаю, починяю примус
Смотрите, вот ссылка на Dockerfile официального контейнера httpd
Апач установлен в /usr/local/apache2 , ну и структура каталогов там примерно такая.

➜  ~ docker exec -it d1d45faeeb6e /bin/bash
root@0e600b0d0cff:/usr/local/apache2# pwd
/usr/local/apache2
root@0e600b0d0cff:/usr/local/apache2#
root@0e600b0d0cff:/usr/local/apache2# ls -la
total 56
drwxr-sr-x 1 www-data www-data 4096 May  8 02:05 .
drwxrwsr-x 1 root     staff    4096 May  8 02:03 ..
drwxr-sr-x 2 root     www-data 4096 May  8 02:05 bin
drwxr-sr-x 2 root     www-data 4096 May  8 02:05 build
drwxr-sr-x 2 root     www-data 4096 May  8 02:05 cgi-bin
drwxr-sr-x 4 root     www-data 4096 May  8 02:05 conf
drwxr-sr-x 3 root     www-data 4096 May  8 02:05 error
drwxr-xr-x 7     1000     1000 4096 Nov 19  2018 htdocs
drwxr-sr-x 3 root     www-data 4096 May  8 02:05 icons
drwxr-sr-x 2 root     www-data 4096 May  8 02:05 include
drwxr-sr-x 1 root     www-data 4096 Sep 25 15:02 logs
drwxr-sr-x 2 root     www-data 4096 May  8 02:05 modules
Ответ написан
Комментировать
Sanes
@Sanes
Вот на кой черт для стека LAMP тянуть докер?
Судя по конфигу это окружение Битрикс. Запускается и прекрасно работает на LXD. Спереди ставится контейнер с Nginx Proxy.
Будете прятаться на NAT, почти наверняка поимеете проблемы с окружением.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы