Ich habe einen einfachen Docker-Container, den ich mit Docker-Compose (Version 3) erstellen, um einen einfachen LAMP-Stack zu erstellen.
Das Problem, das ich habe, ist, dass Dateien, die im Docker Container erstellt werden, immer im Besitz von root sind, so dass ich sie nicht lokal bearbeiten kann.
Ich habe versucht, den Container www-Daten Benutzer auf die gleiche UID als mein lokaler Benutzer, der funktioniert, aber neue Dateien werden immer noch von Root erstellt.
Wie erstelle ich eine Datei im Container, die ich lokal bearbeiten kann?Docker - Erstellen Sie neue Dateien als www-Daten und nicht root
Meine verfasste Datei;
version: "3"
services:
webserver:
build:
context: ./docker/containers/webserver
container_name: 'apache7.1-webserver'
restart: 'always'
ports:
- "80:80"
- "443:443"
links:
- mysql
volumes:
- ${DOCUMENT_ROOT}:/var/www/html
- ${PHP_INI}:/usr/local/etc/php/php.ini
- ${VHOSTS_DIR}:/etc/apache2/sites-enabled
- ${APACHE_LOG_DIR}:/var/log/apache2
mysql:
build: ./docker/containers/mysql
container_name: 'apache7.1-mysql'
restart: 'always'
ports:
- "3306:3306"
volumes:
- ${MYSQL_DATA_DIR}:/var/lib/mysql
- ${MYSQL_LOG_DIR}:/var/log/mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
redis:
container_name: 'apache7.1-redis'
image: redis:latest
ports:
- "6379:6379"
Mein Webserver Dockerfile;
FROM php:7.1-apache
# Get any build argument overrides
ARG APP_UID
ARG APP_GID
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN apt-get clean -y \
&& apt-get update -y \
&& apt-get install -y \
g++ \
locales \
libxml2-dev \
php-soap \
zlib1g-dev \
libicu-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng12-dev \
libmcrypt-dev \
libpng12-dev \
libcurl4-openssl-dev \
libxml2-dev \
nano \
&& apt-get clean -y
RUN docker-php-ext-install mysqli mbstring zip intl mcrypt curl json
RUN docker-php-ext-install iconv xml xmlrpc
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
# Add any required locales here and restart php-fpm, note that some locales do not include currencies such as EURO, if
# this is the case then they will need to be generated in addition to main locale
RUN sed -i -e 's/# en_GB.UTF-8 UTF-8/en_GB.UTF-8 UTF-8/' /etc/locale.gen \
&& sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
&& sed -i -e 's/# pt_BR.UTF-8 UTF-8/pt_BR.UTF-8 UTF-8/' /etc/locale.gen \
&& sed -i -e 's/# de_AT.UTF-8 UTF-8/de_AT.UTF-8 UTF-8/' /etc/locale.gen \
&& sed -i -e 's/# [email protected] ISO-8859-15/[email protected] ISO-8859-15/' /etc/locale.gen \
&& sed -i -e 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' /etc/locale.gen \
&& sed -i -e 's/# fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/' /etc/locale.gen \
&& dpkg-reconfigure --frontend=noninteractive locales \
&& kill -USR2 1
RUN pecl install redis-3.1.2 \
&& pecl install xdebug-2.5.0 \
&& docker-php-ext-enable redis xdebug
# Enable apache modules
RUN a2enmod rewrite headers
# Change www-data user to match the host system UID and GID and chown www directory
RUN usermod --non-unique --uid 1000 www-data \
&& groupmod --non-unique --gid 1000 www-data \
&& chown -R www-data:www-data /var/www
Ich habe USER auf 1000 (und www-Daten) eingestellt. Wenn das geschieht, kann der Container nicht gestartet werden – Rooneyl
Was ist der Fehler? –
(13) Berechtigung verweigert: AH00072: make_sock: konnte nicht an Adresse 0.0.0.0:80 keine hörende Sockets verfügbar, Herunterfahren – Rooneyl