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


итого, не работает и не могу найти уже ошибку.
  • Вопрос задан
  • 1282 просмотра
Пригласить эксперта
Ответы на вопрос 1
@q2digger
никого не трогаю, починяю примус
у вас валится контейнер апача, и тащит за собой остальное.
добейтесь , чтобы они у вас по отдельности работали, и уже после этого используйте docker-compose.
ну и nginx перевешивать на порт 81 не надо. вы просто опишите порт 80 контейнера в порт 81 хоста.
- 80:81
Ответ написан
Ваш ответ на вопрос

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

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