我有一個(gè) Dockerfile,它構(gòu)建 Debian 映像并安裝 Apache、Php、MySql。一般來(lái)說(shuō),如果我運(yùn)行 docker 命令:docker build --tag my-project-image:2.0 .進(jìn)而docker run -dit --name my-project-container \ --mount type=bind,source=$(pwd),destination=/var/www/html \ -p 80:80 --rm my-project-image:2.0我的容器保持運(yùn)行,并且我開(kāi)發(fā)所需的所有服務(wù)都已啟動(dòng)并運(yùn)行,因此沒(méi)有問(wèn)題。我嘗試將此配置移至 docker-compose 中,但遇到了奇怪的麻煩。我相信我犯了一個(gè)非常常見(jiàn)的錯(cuò)誤,但我搜索了很多,嘗試了很多東西,但無(wú)法使其發(fā)揮作用。簡(jiǎn)而言之,當(dāng)我運(yùn)行docker-compose up構(gòu)建的映像時(shí),它會(huì)創(chuàng)建一個(gè)容器,運(yùn)行所有腳本,并且它會(huì)立即存在。問(wèn)題是我想保持該容器運(yùn)行,因?yàn)槲以谀抢镉?Apache 和 MySQL 等服務(wù)。我有兩個(gè)服務(wù),一個(gè)是用于 apache、MySQL 和 PHP 的lamp,另一個(gè)是用于運(yùn)行 npm 腳本的Node 。不幸的是,節(jié)點(diǎn)容器保持正常運(yùn)行,但燈立即關(guān)閉。這是我的 DockerfileFROM debian:latestENV DOC_ROOT=/var/www/htmlWORKDIR ${DOC_ROOT}RUN apt-get updateRUN apt-get --assume-yes upgradeRUN apt-get --assume-yes install apache2RUN apt-get --assume-yes install curl php-curlRUN apt-get --assume-yes install phpRUN apt-get --assume-yes install php-mysqlRUN apt-get --assume-yes install composerRUN apt-get --assume-yes install php-xdebugRUN apt-get --assume-yes install default-mysql-serverRUN a2enmod rewriteCOPY ./ ${DOC_ROOT}RUN echo "ServerName localhost" >> /etc/apache2/apache2.confCOPY config/000-default.conf /etc/apache2/sites-available/EXPOSE 80這是我的docker-compose.yaml文件內(nèi)容version: "3.2"services: lamp: container_name: lamp-stack build: . ports: - 80:80 volumes: - .:/var/www/html command: > /bin/sh -c "service apache2 start && \ service mysql start && \ mysql < migrations/migrations.sql && \ mysql < migrations/development.sql && \ bash" node: container_name: node-builder image: node:12-alpine3.9 depends_on: - lamp working_dir: /var/www/html volumes: - .:/var/www/html command: > /bin/ash -c "npm run build:dev > ./.logs/npm/npm-build.log && \ npm run watch:sass > ./.logs/npm/sass-watch.log"
Docker-compose 不會(huì)讓基礎(chǔ)容器保持運(yùn)行
繁華開(kāi)滿天機(jī)
2023-08-11 18:03:01