社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

在Docker容器内构建项目并在mounted中共享文件夹

fefe • 4 年前 • 631 次点击  

我使用docker compose构建容器,并在状态中签出私有存储库,然后使用composer在容器内构建项目。

我有以下结构

- docker-project
-- docker //here I keep the containers
--- apache
---- Dockerfile // the content what I posted
-- docker-compose.yml
-- src //this is the mounted folder where I can work on project

在构建之后,我希望构建项目会出现在mounted文件夹中,但是我得到的是空文件夹,这里是我的compose yml

     apache:
        container_name: apache2
        build:
          context: ./docker/apache

        ports:
        - 80:80
        - 443:443
        links:
        - database
        restart: always
        volumes:
        - ./src:/var/www/
        - ./docker/logs/apache2/:/var/log/apache2/
        - ~/.ssh/id_rsa:/root/.ssh/id_rsa
        - ./docker/apache/sites/:/etc/apache2/sites-enabled

我这里有Docker档案

FROM php:7.1-apache
ENV APACHE_DOCUMENT_ROOT /var/www
RUN apt-get update \
  && apt-get install -y --no-install-recommends \
    curl \
    openssl \
    openssh-server \
    sendmail \
    sendmail-bin \
    mailutils \
    libicu-dev \
    libmemcached-dev \
    libz-dev \
    libpq-dev \
    libjpeg-dev \
    libfreetype6-dev \
    libssl-dev \
    libmcrypt-dev \
    libxml2-dev \
    libbz2-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    zlib1g-dev \
    libicu-dev  \
    g++ \
    libxml2-dev \
    git \
  && rm -rf /var/lib/apt/lists/*

# Install various PHP extensions which are required to build project
RUN docker-php-ext-configure bcmath --enable-bcmath \
    && docker-php-ext-configure pcntl --enable-pcntl \
    && docker-php-ext-configure pdo_mysql --with-pdo-mysql \
    && docker-php-ext-configure pdo_pgsql --with-pgsql \
    && docker-php-ext-configure mbstring --enable-mbstring \
    && docker-php-ext-configure soap --enable-soap \
    && docker-php-ext-install \
        bcmath \
        json \
        intl \
        mbstring \
        mcrypt \
        mysqli \
        pcntl \
        pdo_mysql \
        pdo_pgsql \
        soap \
        sockets \
        zip \
  && docker-php-ext-configure gd \
    --enable-gd-native-ttf \
    --with-jpeg-dir=/usr/lib \
    --with-freetype-dir=/usr/include/freetype2 && \
    docker-php-ext-install gd

##install xdebug and enable it. We need this for php unit coverage
RUN yes | pecl install xdebug \
&& docker-php-ext-enable xdebug

RUN yes | pecl install mongodb \
&& docker-php-ext-enable mongodb

RUN update-ca-certificates

# install composer to can install dependencies
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php composer-setup.php --install-dir=/usr/local/bin --filename=composer \
    && php -r "unlink('composer-setup.php');"


RUN mkdir /root/.ssh
RUN rm -rf /var/www/project
WORKDIR /var/www/
RUN git checkout path/to/repo
RUN ls -l /var/www
WORKDIR /repo
RUN composer install
RUN ls -l

docker-compose build 我看到这个项目将在 docker-compose up 文件夹为空

我在这个案子里遗漏了什么?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38240
 
631 次点击  
文章 [ 2 ]  |  最新文章 4 年前
Ntwobike
Reply   •   1 楼
Ntwobike    5 年前

我可以给你一个我们现在工作的方式。与其像这样克隆repo,不如在本地机器中克隆repo。

  • 你有标准的Docker图片 php:7.1-apache 使用运行项目所需的软件。

  • 然后将项目克隆到主机上。(考虑到SRC文件夹)

  • 你运行 composer install 本地。

  • 然后正如你所定义的 docker-compose.yml 安装您的 src 文件夹到 /var/www/

rckrd
Reply   •   2 楼
rckrd    5 年前

您正在安装卷 /var/www 启动容器时。

/var/网址 将与 ./src/www 在主机上,替换添加到 /var/网址 在建立图像的过程中。

考虑使用 composer docker image 或者确保将依赖项安装到另一个目录。查看 vendor_dir 钥匙 composer.json

例子: 作曲家.json

{
 "require": {

 },
 "config": {
   "vendor-dir": "/var/www/vendor/"
 }
}

Docker图像构建:

...
RUN mkdir -p /var/www/vendor/
COPY composer.json /var/www/vendor/
RUN cd /var/www/vendor/ && composer install
RUN mkidr -p /var/www/app
...

docker-compose.yml公司

volumes:
  - ./src:/var/www/app