Как правильно собрать docker?

Добрый день,

Решил попробовать в работе docker. docker и docker-compose поставил без проблем, у меня ubuntu 18.04.
Посмотрел статьи, собрал свой конфиг, не работает, вот что получилось у меня:

docker-compose.yml
# Версия docker-compose
version: '3'
# Список наших сервисов (контейнеров)
services:
    apache:
        image: httpd:latest
        volumes:
            - ./www:/var/www/html
            - ./httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf
        depends_on:
            - php
        
    nginx:
        image: nginx:latest
        # маршрутизируем порты
        ports:
            - "81:81"
        # монтируем директории, слева директории на основной машине, справа - куда они монтируются в контейнере
        volumes:
            - ./www:/var/www/html
           - ./nginx/nginx.conf:/etc/nginx/nginx.conf
        depends_on: 
            - apache

    php:
        # у нас свой образ для PHP, указываем путь к нему и говорим что его надо собрать
        build: ./images/php
        # этот образ будет общаться с mysql

        # монтируем директорию с проектами
        volumes:
            - ./www:/var/www/html
            - ./images/php/php.ini:/usr/local/etc/php/php.ini
        depends_on:
            - mariadb

    mariadb:
        image: mariadb:latest
        volumes:
            - ./mariadb:/var/lib/mysql
        environment:
            MYSQL_ROOT_PASSWORD: qwerty

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        links: 
            - mariadb:db
        ports:
            - 8765:81
        environment:
            MYSQL_ROOT_PASSWORD: qwerty
        depends_on:
            - mariadb

    redis:
        image: redis:latest


для nginx пришлось писать порт 81, так как при попытке сборки получал ошибку, что 80 уже слушают. в папке /nginx планирую хранить конфиги для разных сайтов:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       81;
        server_name  test.loc;

        location ~ \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
            root /var/www/html;
        }

        location ~ /\.ht {
            deny  all;
        }

        location / {
            proxy_pass http://apache;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_connect_timeout 120;
            proxy_send_timeout 120;
            proxy_read_timeout 180;
        }
    }
}


Dockerfile:
FROM php:7.2-apache
RUN apt-get update
RUN docker-php-ext-install pdo pdo_mysql mysqli


итого, не работает и не могу найти уже ошибку.
  • Вопрос задан
  • 214 просмотров
Пригласить эксперта
Ответы на вопрос 2
@q2digger
сисадмин
у вас валится контейнер апача, и тащит за собой остальное.
добейтесь , чтобы они у вас по отдельности работали, и уже после этого используйте docker-compose.
ну и nginx перевешивать на порт 81 не надо. вы просто опишите порт 80 контейнера в порт 81 хоста.
- 80:81
Ответ написан
codemafia
@codemafia
Местный дурачок
https://gitlab.com/codemafia/docker-lemp
Стоит отметить, что проект создан исключительно для ознакомления.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
ФИНАМ Москва
от 150 000 до 210 000 руб.
Big Data Technologies Санкт-Петербург
от 130 000 до 210 000 руб.
от 180 000 руб.
23 марта 2019, в 23:45
5000 руб./за проект
23 марта 2019, в 23:33
800 руб./за проект
23 марта 2019, в 21:08
1500 руб./за проект