În prezent, încerc să dockerizez o aplicație Laravel, am reușit să-mi creez Dockerfile și docker-compose.yml cu dependențele de care am nevoie. Cu toate acestea, mă străduiesc să lansez php-fpm, care să arate aplicația mea.
Dockerfile
# Setați imaginea principală
DE LA php:8.0-fpm-alpin
# Copiați composer.lock și composer.json
COPIEAZĂ composer.lock composer.json /var/www/html/
# Setați directorul de lucru
WORKDIR /var/www/html
# Instalați dependențe suplimentare
RUN actualizare apk && adăugare apk --no-cache \
build-base shadow vim curl \
php8 \
php8-fpm \
php8-comun \
php8-pdo \
php8-pdo_mysql \
php8-mysqli \
php8-mbstring \
php8-xml \
php8-openssl \
php8-json \
php8-phar \
php8-zip \
php8-gd \
php8-dom \
sesiune php8 \
php8-zlib \
nodejs \
npm
# Adăugați și activați extensii PHP-PDO
RUN docker-php-ext-install pdo pdo_mysql
RUN docker-php-ext-enable pdo_mysql
# Instalați PHP Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Eliminați memoria cache
RUN rm -rf /var/cache/apk/*
# Adăugați UID „1000” la www-data
RUN usermod -u 1000 www-data
# Copiați permisiunile existente ale directorului aplicației
COPY --chown=www-data:www-data . /var/www/html
# Schimbați utilizatorul actual în www
UTILIZATOR www-date
# Instalați dependențe de aplicație
COPY package.json /var/www/html/
RUN instalarea npm
RUN npm rulare dev
# Expuneți portul 9000 și porniți serverul php-fpm
EXPUNERE 9000
CMD [„php-fpm”]
docker-compose.yml
versiunea: '3'
Servicii:
Aplicația #Laravel
aplicatie:
construi:
context: .
dockerfile: Dockerfile
imagine: heychazza/joinservers.com
container_name: app
reporniți: dacă nu este oprit
tty: adevărat
mediu inconjurator:
SERVICE_NAME: aplicație
SERVICE_TAGS: dev
work_dir: /var/www/html
expune:
- „9000:80”
volume:
- ./:/var/www/html
retele:
- mynet
Serviciul #Nginx
nginx:
imagine: nginx:alpine
container_name: nginx
reporniți: dacă nu este oprit
tty: adevărat
porturi:
- „8080:80”
volume:
- ./:/var/www/html
- ./deployment/nginx/conf.d/:/etc/nginx/conf.d/
#- ./nginx/ssl/:/etc/nginx/ssl/
depinde de:
- aplicație
retele:
- mynet
Serviciul #MySQL
db:
imagine: mariadb:latest
nume_container: db
reporniți: dacă nu este oprit
tty: adevărat
porturi:
- „33060:3306”
mediu inconjurator:
MYSQL_DATABASE: laraveldb
MYSQL_USER: laravel
MYSQL_PASSWORD: laravelpassworddb
MYSQL_ROOT_PASSWORD: rootpasswordmysql
MYSQL_ROOT_HOST: „%”
volume:
- mysqldata:/var/lib/mysql/
retele:
- mynet
#Docker Networks
retele:
mynet:
şofer: pod
#Volume
volume:
mysqldata:
șofer: local
Ce fac? Rulez Docker de pe un MacBook și caut să implementez acest lucru pe o mașină Debian de producție.
Sunt încă nou în docker, așa că îmi cer scuze dacă am omis ceva.