How docker compose push?

Ссылка скопирована
24 апреля 2026 1 ответ

Добрый!
Хочу отправить свой 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>

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>

How docker compose push?

Дополнительно:

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

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;     ... }

location ~ .php$ { fastcgi_split_path_info ^(.+.php)(/.+)$; fastcgi_pass app:9000; ... }

Здесь app:9000 указывает на ваш PHP контейнер и порт 9000, который слушает PHP-FPM.

  • Спасибо за корр!
    Но я сделал 3 одинаковых images чтобы после docker-compose up -d я имел 1 image,
    у меня задача сделать push на docker hub. Как это сделать,если будут 3 образа?
  • cubinez85, на неправильный вопрос невозможно получить правильный ответ
  • сергей кузьмин,
    Хорошо! Вопрос такой : как сделать push 3 образов на docker hub?
  • сергей кузьмин, в один реп?
  • готов оплатить услугу
  • образы можно загружать только по одному .
    три раза
    docker login docker tag <SOURCE_IMAGE><:TAG> <USERNAME>/<TARGET_IMAGE>:<TARGET_TAG> docker push <USERNAME>/<TARGET_IMAGE>:<TARGET_TAG>

    docker login docker tag <SOURCE_IMAGE><:TAG> <USERNAME>/<TARGET_IMAGE>:<TARGET_TAG> docker push <USERNAME>/<TARGET_IMAGE>:<TARGET_TAG>

  • Спасибо!
    Понял!

Создаешь свой аккаунт на докер хаб. Создаешь репозиторий в аккаунте - типа 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

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/

  • используйте разные теги для каждого образа, ну или 3 разных репо сделайте?
  • Всем спасибо!
    Все понял!
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Юрий Linux Ответ

To push a Docker Compose configuration to a remote repository, you can follow these steps:

1. Make sure you have Docker Compose installed on your local machine. You can check this by running the following command in your terminal:

docker-compose --version

docker-compose --version

2. Log in to the Docker Hub or any other container registry where you want to push your Docker Compose configuration. You can log in using the following command:

docker login

docker login

3. Create a Docker Compose file (usually named docker-compose.yml) that defines your services, networks, and volumes.

4. Build your Docker images using the following command:

docker-compose build

docker-compose build

5. Tag your Docker images with the repository name and version. You can do this using the following command:

docker tag  :

docker tag :

6. Push your Docker images to the remote repository using the following command:

docker push :

docker push :

7. Finally, you can push your Docker Compose configuration file to the remote repository. This can be done by pushing the entire directory containing the docker-compose.yml file to the repository.

By following these steps, you will be able to push your Docker Compose configuration to a remote repository successfully. Remember to replace , , and with your actual values.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно