@KonstantinDyulin

Как использовать curl в Dockerfile?

Есть вот такой Dockerfile который использует curl
FROM php:8.2-fpm

#RUN sed -i '/stretch-updates/d' /etc/apt/sources.list

# Install composer
RUN echo "\e[1;33mInstall COMPOSER\e[0m"
RUN cd /tmp \
    && curl -sS https://getcomposer.org/installer | php \
    && mv composer.phar /usr/local/bin/composer

RUN apt update && apt install -y libpq-dev && docker-php-ext-install pdo pdo_pgsql

RUN apt update

# Install useful tools
RUN apt -y install apt-utils nano wget dialog vim

# Install important libraries
RUN echo "\e[1;33mInstall important libraries\e[0m"
RUN apt -y install --fix-missing \
    apt-utils \
    build-essential \
    git \
    curl \
    zlib1g-dev \
    libzip-dev \
    zip \
    libbz2-dev \
    locales \
    libmcrypt-dev \
    libicu-dev \
    libonig-dev \
    libxml2-dev

RUN echo "\e[1;33mInstall important docker dependencies\e[0m"
RUN docker-php-ext-install \
     exif \
     pcntl \
     bcmath \
     ctype \
     iconv \
     xml \
     soap \
     pcntl \
     mbstring \
     #tokenizer \
     bz2 \
     zip \
     intl \
    gettext

При попытке сбора контейнера выпадает эта ошибка
ERROR [app  3/10] RUN cd /tmp  && curl -sS https://getcomposer.org/installer | php  && mv composer.phar /usr/local/bin/composer                                                       204.5s ------
 > [app  3/10] RUN cd /tmp      && curl -sS https://getcomposer.org/installer | php     && mv composer.phar /usr/local/bin/composer:
204.5 curl: (35) Recv failure: Connection reset by peer
204.5 mv: cannot stat 'composer.phar': No such file or directory

Вот так выглядит docker-compose.yml
version: '3.8'

services:

  # Web Server Service
  nginx:
    image: nginx
    container_name: "nginx"
    ports:
      - "8080:80"
    volumes:
      - .:/var/www
      - ./nginx/conf.d/:/etc/nginx/conf.d/
    depends_on:
      - app
      - db

  #Database Service
  db:
    image: postgres
    restart: always
    container_name: 'postgres'
    volumes:
      - ./mysql/data:/var/lib/mysql
      - .:/var/www
    ports:
      - "5432:5432"
    environment:
      POSTGRES_DB: db
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password

  app:
    container_name: "app-name"
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/var/www
    ports:
      - "9000:9000"
    working_dir: /var/www

Подскажите пожалуйста с чем может быть свзяана, эта ошибка и в какую сторону копать для ее решения. На борту хоста nginx, пытаюсь запустить приложение для следущей привязки к домену
  • Вопрос задан
  • 284 просмотра
Решения вопроса 1
Почему то запрос отбивается на стороне getcomposer.org, curl тут не причём.
А вообще лучше использовать multi-stage сборку.
Замени
RUN cd /tmp \
    && curl -sS https://getcomposer.org/installer | php \
    && mv composer.phar /usr/local/bin/composer

на
COPY --from=composer /usr/bin/composer /usr/bin/composer


и стоит избавиться от всех RUN echo ..., это создаёт лишнии слои
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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