Я пытаюсь создать контейнер для своего приложения, но делаю это впервые. Я всегда использую xampp, но хочу научиться делать этот процесс. Я читаю любое руководство по созданию своего контейнера, но не могу его создать.
Сначала я создаю свой файл Dockerfile со следующим содержимым:
Код: Выделить всё
#
#--------------------------------------------------------------------------
# Image Setup
#--------------------------------------------------------------------------
#
FROM php:8.1-fpm
# setup user as root
USER root
WORKDIR /var/www
# setup node js source will be used later to install node js
RUN curl -sL https://deb.nodesource.com/setup_16.x -o nodesource_setup.sh
RUN ["sh", "./nodesource_setup.sh"]
# Install environment dependencies
RUN apt-get update \
# gd
&& apt-get install -y build-essential openssl nginx libfreetype6-dev libjpeg-dev libpng-dev libwebp-dev zlib1g-dev libzip-dev gcc g++ make vim unzip curl git jpegoptim optipng pngquant gifsicle locales libonig-dev nodejs \
&& docker-php-ext-configure gd \
&& docker-php-ext-install gd \
# gmp
&& apt-get install -y --no-install-recommends libgmp-dev \
&& docker-php-ext-install gmp \
# pdo_mysql
&& docker-php-ext-install pdo_mysql mbstring \
# pdo
&& docker-php-ext-install pdo \
# opcache
&& docker-php-ext-enable opcache \
# exif
&& docker-php-ext-install exif \
&& docker-php-ext-install sockets \
&& docker-php-ext-install pcntl \
&& docker-php-ext-install bcmath \
# zip
&& docker-php-ext-install zip \
&& apt-get autoclean -y \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /tmp/pear/
# Copy files
COPY . /var/www
COPY ./docker/php.ini /usr/local/etc/php/local.ini
COPY ./docker/nginx.conf /etc/nginx/nginx.conf
RUN chmod +rwx /var/www
RUN chmod -R 777 /var/www
RUN apt-get update && apt-get install -y \
software-properties-common \
npm
RUN npm install npm@latest -g && \
npm install n -g && \
n latest
# setup FE
RUN npm install
RUN npm rebuild node-sass
RUN npm run prod
# setup composer and laravel
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN composer install --working-dir="/var/www"
RUN composer dump-autoload --working-dir="/var/www"
RUN php artisan optimize
RUN php artisan route:clear
RUN php artisan route:cache
RUN php artisan config:clear
RUN php artisan config:cache
RUN php artisan view:clear
RUN php artisan view:cache
# remove this line if you do not want to run migrations on each build
RUN php artisan migrate --force
EXPOSE 80
RUN ["chmod", "+x", "post_deploy.sh"]
CMD [ "sh", "./post_deploy.sh" ]
# CMD php artisan serve --host=127.0.0.1 --port=9000
Код: Выделить всё
version: '3.8'
services:
# Application & web server
app:
build:
context: .
working_dir: /var/www
volumes:
- ./:/var/www
depends_on:
- "database"
ports:
- 8080:8080
# Database
database:
image: mysql:8.0
volumes:
- dbdata:/var/lib/mysql
environment:
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_USER: ${DB_USERNAME}
ports:
- "33061:3306"
# Database management
pma:
image: phpmyadmin:5.1
environment:
- PMA_ARBITRARY=1
- PMA_HOST=${DB_HOST}
- PMA_USER=${DB_USERNAME}
- PMA_PASSWORD=${DB_PASSWORD}
- PMA_PORT=${DB_PORT}
depends_on:
- database
ports:
- 8888:8080
# Mailing Server
mailhog:
image: mailhog/mailhog
logging:
driver: 'none'
ports:
- 1025:1025
- 8025:8025
volumes:
dbdata:
Код: Выделить всё
[+] Building 30.1s (2/2) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 2.43kB 0.0s
=> ERROR [internal] load metadata for docker.io/library/php:8.1-fpm 30.0s
------
> [internal] load metadata for docker.io/library/php:8.1-fpm:
------
Dockerfile:7
--------------------
5 | #
6 |
7 | >>> FROM php:8.1-fpm
8 |
9 | # setup user as root
--------------------
ERROR: failed to solve: php:8.1-fpm: failed to do request: Head "https://registry-1.docker.io/v2/library/php/manifests/8.1-fpm": proxyconnect tcp: dial tcp 192.168.65.1:3128: i/o timeout
Источник: https://stackoverflow.com/questions/781 ... repository
Мобильная версия