Задать вопрос

How docker compose push?

Добрый!
Хочу отправить свой docker compose (nginx,php,mysql) на hub.docker.com : сделал пустой реп, внес корр в docker-compose.yml( 3 одинаковых image). В результате получилось 1 image и 3 контейнера. Порты слушаются (скрин) .Можно делать docker tag и docker push. Но проблема - curl localhost не отображает страницу php( как было раньше-3 образа и 3 контейнера). Чего делать? Мой yml:
version: '3.7'
services:
#Контейнер с PHP, назовём его app
      app:
# Если нет секции build, то система будет искать образ в
       build: ${PWD}/fpm/
# имя будущего образа
       image: cubinez85/docker_compose/web:latest
# имя контейнера после запуска
       container_name: app
# монтируемая папка в контейнер
       volumes:
            - ${PWD}/code:/data
# мы можем создать для контейнеров внутреннюю сеть
       networks:
            - app-network
#контейнер с Nginx
      webserver:
        build: ${PWD}/nginx/
        image: cubinez85/docker_compose/web:latest
        container_name: webserver
        volumes:
          - ${PWD}/code:/data
# проброс портов
        ports:
          - "80:80"
          - "443:443"
        networks:
          - app-network
 # контейнер с MySQL
 # строим на базе стандартного образа
      db:
       image: cubinez85/docker_compose/web:latest
       container_name: db
       ports:
          - "3306:3306"
# описываем, какую БД мы создаем
       environment:
          MYSQL_DATABASE: ${MYSQL_DATABASE}
          MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
       volumes:
            - ${PWD}/dbdata:/var/lib/mysql
       networks:
            - app-network
#Docker Networks
networks:
  app-network:
    driver: bridge>

64d74992e5104887590388.png
  • Вопрос задан
  • 856 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
Erik_Mironov
@Erik_Mironov
Старые вопросы: *Dies from cringe*
1.Использование одного образа для разных сервисов: В вашем файле docker-compose.yml все три сервиса (app, webserver и db) используют один и тот же образ cubinez85/docker_compose/web:latest. Это неправильно, так как каждый из этих сервисов должен иметь свой образ, настроенный для конкретной задачи.

2.Конфигурация NGINX: Если ваш NGINX не настроен правильно, он не сможет перенаправлять запросы на PHP контейнер. Вам нужно удостовериться, что конфигурация NGINX правильно перенаправляет запросы на fastcgi_pass адрес вашего PHP контейнера.

3.Настройка PHP-FPM: Убедитесь, что PHP-FPM в вашем app контейнере настроен для прослушивания соединений (обычно это делается с помощью listen = 9000 в файле www.conf).

Измените docker-compose.yml:
version: '3.7'
services:
    app:
        build: ${PWD}/fpm/
        image: cubinez85/docker_compose/app:latest
        container_name: app
        volumes:
            - ${PWD}/code:/data
        networks:
            - app-network

    webserver:
        build: ${PWD}/nginx/
        image: cubinez85/docker_compose/nginx:latest
        container_name: webserver
        volumes:
            - ${PWD}/code:/data
        ports:
            - "80:80"
            - "443:443"
        networks:
            - app-network

    db:
        image: mysql:latest
        container_name: db
        ports:
            - "3306:3306"
        environment:
            MYSQL_DATABASE: ${MYSQL_DATABASE}
            MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
        volumes:
            - ${PWD}/dbdata:/var/lib/mysql
        networks:
            - app-network

networks:
    app-network:
        driver: bridge


Убедитесь что в nginx.conf есть что-то вроде:
location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass app:9000;
    ...
}

Здесь app:9000 указывает на ваш PHP контейнер и порт 9000, который слушает PHP-FPM.
Ответ написан
Viji
@Viji
DevOps Engineer
Создаешь свой аккаунт на докер хаб. Создаешь репозиторий в аккаунте - типа my_docker_images.

Заходишь на свой терминал и выполняешь команды
docker tag <my_docker_image_id> <username_for_hub>/my_docker_images:latest
docker login
docker push <username_for_hub>/my_docker_images:latest


вместо latest можешь использовать например master-1 или любой другой тег. Dokcer image id можешь найти через команду docker images

Если помог, переведи деньги детишкам лучше https://rusfond.ru/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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