質問: ### 概要 テスト環境を構築したくdockerを利用しています。下記のような環境を構築したくイメージファイルを作成しているのですが、ビルドの際にエラーでつまずいてしまいます。 ``` FROM ubuntu:17.04 RUN apt-get update -y ``` ``` 1 version: '3' 2 services: 3 db: 4 ¦image: mysql:5.7 5 ¦ports: 6 ¦¦- '3306:3306' 7 ¦environment: 8 ¦¦MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' 9 ¦¦MYSQL_DATABASE: magento 10 ¦volumes: 11 ¦- ./data/db-data:/var/lib/mysql 12 ¦- ./data/docker-logs/mysql:/var/log/mysql 13 web: 14 ¦build: ./ 15 ¦container_name: test 16 ¦ports: 17 ¦- "80:80" 18 ¦links: 19 ¦¦- db 20 ¦volumes: 21 ¦¦- ./data:/var/www/html:cached 22 ¦depends_on: 23 ¦¦- db ``` ### エラー内容 ``` ERROR: Service 'web' failed to build: The command '/bin/sh -c apt-get update -y' returned a non-zero code: 100 ``` ### 試したこと apt-get updateの際に対話式になってしまうのでオプションをつけて全てyesで返答するように設定しましたがエラーは変わりません。 ### 質問 1) 上記のエラーの場合、どの辺りが怪しいでしょうか? 2) dockerで環境構築するのは初めてなのですが、下記のような環境を構築する場合、dockerfileのFROMはUbuntuから始めるべきでしょうか?それともphp or nginx? いくつかページを参考にしているのですが、FROMはphpやnginxから初めて場合が多いのです。 その場合、OSはどうなるのでしょうか? ### 構築したい環境 ・Ubuntu linux 16.04LTS amd64 ・PHP7.1 ・nginx ・MySQL 5.7 ・Magento 2.3 ・redis ・Varnish
回答: 1) > > 構築したい環境 > > ・Ubuntu linux 16.04LTS amd64 > > > ということですので、 ``` FROM ubuntu:16.04 ``` が正解でしょう。 17.04はサポートされていないようですし。(ubuntu) これがエラーの原因かな? 2) これは意見が分かれるところで、質問文のような構成にする派と、1コンテナ1プロセス(FROM nginxとFROM phpを別のコンテナにする)派がいるようです。 個人的には今の構成で問題ないと思います。 OSはそれぞれのDockerfileを見に行けばわかります。(nginx,PHP) どちらもlatestならDebianのようですね。 タグをalpineにすればAlpineも選べるようです。