Как правильно собрать 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


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

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

Войти через TM ID
Похожие вопросы
Irecommend.ru Краснодар
от 70 000 до 130 000 руб.
Admon Новосибирск
от 50 000 до 70 000 руб.
3ATDev Севастополь
от 60 000 до 120 000 руб.
20 янв. 2019, в 22:33
30000 руб./за проект
20 янв. 2019, в 22:03
1000 руб./за проект