我用碼頭設置遇到了一種母雞與雞蛋的問題。在我的Dockerfile
中,我安裝了nginx,php和所需的配置。我還安裝有作曲:如何處理碼頭集裝箱中的PHP項目代碼
FROM ubuntu
RUN apt-get update && apt-get install -y \
curl \
nginx \
nodejs \
php7.0-fpm \
php-intl \
php-pgsql
RUN rm -rf /var/lib/apt/lists/* && \
echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin && \
chown -R www-data:www-data /var/www/
COPY orocrm /etc/nginx/sites-available/
RUN ln -s /etc/nginx/sites-availabe/orocrm /etc/nginx/sites-enabled/orocrm
CMD nginx
現在,下一步將是通過實際安裝作曲家項目目錄中的所有依賴性。這是麻煩開始的地方:因爲這是我的開發機器,我不想將我的本地項目文件複製到docker容器中。相反,我安裝在我的docker-compose.yml
:
version: '3'
services:
web:
...
volumes:
- "./crm-application:/var/www/orocrm/"
我不能把composer install
在Dockerfile,作爲目錄(在我的搬運工,撰寫文件)的安裝正在發生在運行Dockerfile後。
這裏最好的解決方案是什麼?我想到的另一個選項是將文件逐漸複製到容器中,然後使用filewatcher將更改後的文件保存到容器中。雖然不是一個好的解決方案。
UPDATE我想強調我的實際問題是什麼:我爲我的開發機器上,我要不斷地更新代碼,並有變化反映立即 withouth的再次構建圖像。因此,COPY
不是一個選項。
嘗試類似這樣:創建一個腳本,用於啓動容器(例如'start.sh',使其可執行),它運行'composer install',然後運行'nginx',並將其添加到'在Dockerfile中複製start.sh/start.sh'和'CMD/start.sh' – Salem