I in Verbindung mit drei getrennten Behältern zusammen:Docker komponieren php-fpm, nginx, MySQL und Verwendung wp-cli auf nginx
mein Ziel ist, wp-cli-Installation vor dem Quellcode auszuführen, der in den nginx-Container kopiert wird.
Fragen:
- versuchen Installationsskript von wp-cli von Dockerfile (my-nginx Bild) funktioniert gut, aber wenn ich irgendwelche wp-cli Befehle es gibt Fehler ausgeführt wird versuchen zu laufen:
env: can't execute 'php': No such file or directory
- wp-cli Installationsskript (mit der rechten Abhängigkeit) funktioniert auch auf dockerfile.php-fpm (my-php Bild), es gibt auch einen Fehler:
Error: YIKES! It looks like you're running this as root. You probably meant to run this as the user that your WordPress install exists under.
und bietet mir diesen Befehl mit der Flagge --allow- root, das ist in diesem Fall schlecht, weil ich wp Benutzerberechtigungen verwenden möchte. oder um diesen Befehl als einen anderen Benutzer auszuführen.
Kern configuretions
Andockfensters-compose.yml:
version: '2'
services:
my-nginx:
build: .
volumes:
- .:/var/www/html
ports:
- "8080:80"
links:
- my-php
- my-mysql
my-php:
build:
context: .
dockerfile: Dockerfile.php-fpm
volumes:
- .:/var/www/html
ports:
- "9000:9000"
my-mysql:
image: mariadb:5.5
volumes:
- /var/lib/mysql
nginx.conf: https://github.com/conetix/docker-wordpress-wp-cli
Option:
server {
server_name _;
listen 80 default_server;
root /var/www/html;
index index.php index.html;
access_log /dev/stdout;
error_log /dev/stdout info;
location/{
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include fastcgi_params;
fastcgi_pass my-php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
wp-cli Integration von geklont 1
Dokerfile:
FROM nginx:1.10-alpine
# add root dir
RUN mkdir -p /var/www/html
WORKDIR /var/www/html
ENV WP_ROOT /var/www/html
# Install requirements for wp-cli support
RUN apk update \
&& apk add less mysql-client sudo curl
# copy nginx configuration
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Add WP-CLI
RUN curl -o /bin/wp-cli.phar https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
COPY wp-su.sh /bin/wp
RUN chmod +x /bin/wp-cli.phar \
&& sudo mv /bin/wp-cli.phar /usr/local/bin/wp
RUN wp core download --allow-root
# copy all files for current dir (should be theme or plugin folder)
COPY . ./
Dockergile.php-fpm
FROM php:7.0.6-fpm-alpine
VOLUME /var/www/html
RUN docker-php-ext-install -j $(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) iconv gd mbstring fileinfo curl xmlreader xmlwriter mysqli
Option 2
Dokerfile:
FROM nginx:1.10-alpine
# add root dir
RUN mkdir -p /var/www/html
WORKDIR /var/www/html
RUN apk update \
&& apk add less mysql-client sudo
# copy nginx configuration
COPY nginx.conf /etc/nginx/conf.d/default.conf
# copy all files for current dir (should be theme or plugin folder)
COPY . ./
Dockergile.php-fpm
FROM php:7.0.6-fpm-alpine
VOLUME /var/www/html
RUN docker-php-ext-install -j $(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) iconv gd mbstring fileinfo curl xmlreader xmlwriter mysqli
# Install requirements for wp-cli support
RUN apk update \
&& apk add curl sudo less
ENV WP_ROOT /var/www/html
# Add WP-CLI
RUN curl -o /bin/wp-cli.phar https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
COPY wp-su.sh /bin/wp
RUN chmod +x /bin/wp-cli.phar \
&& sudo mv /bin/wp-cli.phar /usr/local/bin/wp
RUN wp core download
allgemeine Fragen:
- was ist die beste Praxis für die Benutzer premissions innerhalb dockers?
- wp-cli integration von https://github.com/conetix/docker-wordpress-wp-cli/blob/master/wp-su.sh verwendet www-data user - soll ich diesen benutzer zu meinem docker hinzufügen, und wenn ja - zu welchem? ngnix oder php-fpm und warum.
- laufenden wp donlow Core von php-fpm Container appaers, als ob es die Dateien herunterladen, aber wenn ich versuche, beim Ausführen ausführen, keine dieser Dateien unter/var/www/html angezeigt. Gibt es eine bestimmte Möglichkeit, Bilder zu mounten?
- Warum ist 'PHP' nicht verfügbar Befehl von My-Nginx, wenn ich Volumen
my-php Bild? Ich muss PHP auch auf diesem Bild installieren?
wo www-data Benutzer definiert ist? –
Es existiert einfach in der PHP FPM-Box. Die PHP-Box hat es zuvor als Benutzer definiert, der die fpm-Prozesse ausführt. –