Я хочу, чтобы он запускал apache в док-контейнере от имени того же пользователя, который я использую в моей хост-системе.Таким образом, я владею файлами на своем хосте, чтобы редактировать их, и apache (PHP) может создавать папки и т.д ..
Мой Dockerfile :
FROM php:7.2-apache
RUN adduser wipster --disabled-password --disabled-login --gecos ""
ENV APACHE_RUN_USER wipster
ENV APACHE_RUN_GROUP wipster
RUN sed -i "s#APACHE_RUN_USER:=.*#APACHE_RUN_USER:=wipster}#" /etc/apache2/envvars \
&& sed -i "s#APACHE_RUN_GROUP:=.*#APACHE_RUN_GROUP:=wipster}#" /etc/apache2/envvars
RUN apt-get -qqy update \
&& apt-get install -y libjpeg-dev libpng-dev re2c libmcrypt-dev zlib1g-dev libssl-dev libc-client2007e-dev libkrb5-dev libcurl4-gnutls-dev libxml2-dev libxslt-dev libldap2-dev libssl-dev vim strace unzip g++
RUN touch /var/www/html/php-error.log
RUN chown wipster:wipster /var/www/html/php-error.log
RUN docker-php-ext-install bcmath mbstring mysqli pdo_mysql zip curl pcntl \
&& docker-php-ext-configure gd --with-jpeg-dir=/usr/lib \
&& docker-php-ext-install gd \
&& docker-php-ext-configure imap --with-imap-ssl --with-kerberos \
&& docker-php-ext-install imap \
&& docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \
&& docker-php-ext-install ldap
# Install xhprof from tideways.
RUN curl -L https://github.com/tideways/php-xhprof-extension/archive/v5.0-beta2.tar.gz | tar xz && \
cd php-xhprof-extension-5.0-beta2/ && \
phpize && \
./configure && \
make && \
make install
RUN yes | pecl install xdebug-2.7.2 \
&& pecl install redis \
&& docker-php-ext-enable redis xdebug opcache tideways_xhprof
# /usr/local/etc/php
ADD config/crm.php.ini /usr/local/etc/php/conf.d/
ADD config/xdebug.ini /usr/local/etc/php/conf.d/
ADD config/opcache.ini /usr/local/etc/php/conf.d/
ADD config/opcache-blacklist /usr/local/etc/php/
ADD config/xhprof.ini /usr/local/etc/php/conf.d/
RUN a2enmod headers expires deflate rewrite
# xdebug cli debugging
RUN export XDEBUG_CONFIG="remote_enable=1 remote_mode=req remote_port=9000 remote_host=192.168.1.144 remote_connect_back=0"
RUN export PHP_IDE_CONFIG="serverName=wipster-dckr"
EXPOSE 80
VOLUME ["/var/www"]
Проблема заключается в том, когдаЯ подключаюсь к контейнеру через ssh и проверяю / etc / apache2 / envvars, в нем все еще есть www-данные в качестве запускаемого пользователя.Я использовал тот же Dockerfile на Alpine Linux с php: 7.1-apache, и он работал просто отлично.Когда я выполняю команду sed вручную, она также работает.Сейчас я нахожусь на элементарной ОС Juno, и версия докера имеет вид php: 7.2-apache .
Мой docker-compose.yml :
version: "3"
networks:
webnet:
services:
web:
image: wipster/relaunch:1
depends_on:
- db
deploy:
replicas: 1
resources:
limits:
cpus: '3.0'
memory: 2000M
reservations:
cpus: '1.0'
memory: 1000M
volumes:
- ../relaunch:/var/www/html:delegated
ports:
- 8000:80
networks:
- webnet
db:
image: mysql:5.7
deploy:
replicas: 1
resources:
limits:
cpus: '2.0'
memory: 1000M
reservations:
cpus: '1.0'
memory: 500M
volumes:
- db_data_wipster:/var/lib/mysql:delegated
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wipster
MYSQL_USER: root
MYSQL_PASSWORD: root
ports:
- 3306:3306
networks:
- webnet
command: mysqld --sql_mode="NO_ENGINE_SUBSTITUTION" --innodb-buffer-pool-size=536870912 --innodb-flush-method=O_DIRECT --innodb-flush-log-at-trx-commit=0
volumes:
db_data_wipster:
Я что-то упустил?Нужно ли запускать команду sed позже?