こんにちは、Dockerは初めてです。 docker-compose.ymlがあり、次のようになります。
version: "3"
services:
lmm-website:
image: lmm/lamp:php${PHP_VERSION:-71}
container_name: ${CONTAINER_NAME:-lmm-website}
environment:
HOME: /home/user
command: supervisord -n
volumes:
- ..:/builds/lmm/website
- db_website:/var/lib/mysql
ports:
- 8765:80
- 12121:443
- 3309:3306
networks:
- ntw
volumes:
db_website:
networks:
ntw:
Docker-composeファイル内からYarnパッケージマネージャーをインストールしたい:
Sudo apt-get update && Sudo apt-get install yarn
私はこれを宣言する方法を理解できませんでした、私は試しました
command: supervisord -n && Sudo apt-get update && Sudo apt-get install yarn
静かに失敗します。これを正しく宣言するにはどうすればよいですか?または、docker-compose.ymlはこのための間違った場所ですか?
このタスク用に特別に設計されたDockerfileを使用しないのはなぜですか?
「image」プロパティを「build」プロパティに変更して、Dockerfileをリンクします。
Docker-compose.ymlは次のようになります。
services:
lmm-website:
build:
context: .
dockerfile: Dockerfile
container_name: ${CONTAINER_NAME:-lmm-website}
environment:
HOME: /home/user
command: supervisord -n
volumes:
- ..:/builds/lmm/website
- db_website:/var/lib/mysql
ports:
- 8765:80
- 12121:443
- 3309:3306
networks:
- ntw
volumes:
db_website:
networks:
次に、dockerfileという名前のテキストファイルをdocker-compose.ymlと同じパスに次の内容で作成します。
FROM lmm/lamp:php${PHP_VERSION:-71}
RUN apt-get update && apt-get install -y bash
ADD、COPYなどの他のDockerfile機能とは別に、DockerfileのRUN(cp、mv、ls、bash ...)を使用して、必要なだけSOコマンドを追加できます。
+ info:
https://docs.docker.com/engine/reference/builder/
+ live-example:
hello-docker-reactというgithubプロジェクトを作成しました。名前が示すとおり、Docker-React Boxであり、上記で説明した手順を使用してyarnと他のツールをインストールする際の例として役立ちます。
それに加えて、docker-compose entrypointプロパティを使用してdocker-compose.ymlファイルにリンクされたエントリポイントbashスクリプトを使用してyarnを起動します。
これを試して
command: supervisord -n && apt-get update && apt-get install yarn
Sudoはdockerでは機能しないためです。