以下のようなPHPとpostgresおよびnginxのコンテナを作成する
docker-compose.ymlファイルを作成しています。
yml
1 2version: '3' 3 4services: 5 # Nginxサーバーの設定 6 line-web-server: 7 # デフォルトのnginxイメージを用いる 8 image: nginx:latest 9 # ports でポートフォワーディングを指定. 10 ports: 11 - "22280:80" 12 volumes: 13 - "./app-source:/var/www/html" 14 - "./web-config:/etc/nginx/conf.d" 15 16 # docker-compose時の起動コンテナ名 17 container_name: line-web-server 18 19 20 line-app-server: 21 dns: 8.8.8.8 22 build: "./app-docker-file" 23 # ports でポートフォワーディングを指定. 24 volumes: 25 - "./app-source:/var/www/html" 26 # docker-compose時の起動コンテナ名 27 container_name: line-app-server 28 29 # postgresマスターサーバー 30 line-postgres-server: 31 image: postgres:9.5 32 environment: 33 POSTGRES_USER: voter 34 POSTGRES_DB: vote_system_db 35 POSTGRES_PASSWORD: password 36 restart: always 37 ports: 38 - "45432:5432" 39 volumes: 40 # 永続化のためのDocker volumeを指定する 41 - "line_db:/var/lib/postgresql/data" 42 - "./initdb:/docker-entrypoint-initdb.d" 43 # docker-compose時の起動コンテナ名 44 container_name: line-postgres-server 45 46 47volumes: 48 line_db: 49 external: true 50
上記 docker-compose.ymlファイルを
ini
1docker-compose build --no-cache
で実行すると 以下のようなエラーが表示されます
ini
1 2 ---> Running in 99cd35a01be3 3Removing intermediate container 99cd35a01be3 4 ---> db6ccf021215 5Step 3/9 : RUN apt-get update 6 ---> Running in 891ade3e6454 7Err:1 http://security.debian.org/debian-security buster/updates InRelease 8 Temporary failure resolving 'security.debian.org' 9Err:2 http://deb.debian.org/debian buster InRelease 10 Temporary failure resolving 'deb.debian.org' 11Err:3 http://deb.debian.org/debian buster-updates InRelease 12 Temporary failure resolving 'deb.debian.org' 13Reading package lists... 14W: Failed to fetch http://deb.debian.org/debian/dists/buster/InRelease Temporary failure resolving 'deb.debian.org' 15W: Failed to fetch http://security.debian.org/debian-security/dists/buster/updates/InRelease Temporary failure resolving 'security.debian.org' 16W: Failed to fetch http://deb.debian.org/debian/dists/buster-updates/InRelease Temporary failure resolving 'deb.debian.org' 17W: Some index files failed to download. They have been ignored, or old ones used instead. 18Removing intermediate container 891ade3e6454 19 ---> ce8c52f90080 20Step 4/9 : RUN apt-get install -y libpq-dev libjpeg-dev libpng-dev vim nodejs sendmail git libzip-dev unzip 21 ---> Running in 5e818608a902 22Reading package lists... 23Building dependency tree... 24Reading state information... 25Package git is not available, but is referred to by another package. 26This may mean that the package is missing, has been obsoleted, or 27is only available from another source 28 29E: Unable to locate package libpq-dev 30E: Unable to locate package libjpeg-dev 31E: Unable to locate package libpng-dev 32E: Unable to locate package vim 33E: Unable to locate package nodejs 34E: Unable to locate package sendmail 35E: Package 'git' has no installation candidate 36E: Unable to locate package libzip-dev 37E: Unable to locate package unzip 38ERROR: Service 'line-app-server' failed to build: The command '/bin/sh -c apt-get install -y libpq-dev libjpeg-dev libpng-dev vim nodejs sendmail git libzip-dev unzip' returned a non-zero code: 39 100
いろいろ、調査したところ、phpコンテナのDNS設定の不具合だという点が濃厚そうなのですが、
/etc/resolv.confを修正したりしても解決しませんでした。
例えば
nameserver 8.8.8.8を書き込むなど。
ただ
ini
1 2docker container create --name php-server -it --net host -p 8080:80 php:latest /bin/bash 3
上記の様に、--net hostというパラメータをつけて phpコンテナ単体で実行し
コンテナ内で apt-get updateすると問題なく apt-get update が実行されました。
docker-compose.ymlに net: "host"という設定を追加してみたのですが、それでも
apt-get update できません。
どなたか解決方法がわかる方、ご存知のかたご教授くださると幸いです。
実行しているDockerfileは以下のとおりです
ini
1 2FROM php:7.2.19-fpm 3 4# (1) 5RUN apt-get update 6# (2) 7RUN apt-get install -y libpq-dev libjpeg-dev libpng-dev vim nodejs sendmail git libzip-dev unzip 8# (3) 9RUN docker-php-ext-configure gd --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ 10# (4) 11RUN docker-php-ext-install gd opcache pdo_pgsql pdo_mysql 12 13 14# git動作環境で 非SSLでも通信できるように設定 15RUN git config --global http.sslVerify false 16# Composerのインストール 17COPY --from=composer /usr/bin/composer /usr/bin/composer 18 19WORKDIR /var/www/html 20
検証処理(1)
上記の#(1)~#(4)のRUNコマンドをコメントアウトしてほぼコンテナイメージのままビルドして、dokcer container exec -it コンテナ名 /bin/bash でコンテナ内に入って
apt-get update してもエラーで帰ってきました。
検証処理(2)
ただ、docker-compose.ymlに
network_mode: "host"を追加した状態で
同じく
上記の#(1)~#(4)のRUNコマンドをコメントアウトしてほぼコンテナイメージのままビルドして、dokcer container exec -it コンテナ名 /bin/bash でコンテナ内に入って
apt-get update した場合はうまく updateがはしりました。
ただDockerfileにRUN apt-get updateを記述した場合は、同様にDNS関連のエラーのような ものが発生します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/05/12 13:45
退会済みユーザー
2020/05/12 13:49
2020/05/12 13:49
退会済みユーザー
2020/05/12 13:53
退会済みユーザー
2020/05/12 13:59 編集
2020/05/12 14:02
2020/05/12 14:03
2020/05/12 14:05
退会済みユーザー
2020/05/12 14:10
退会済みユーザー
2020/05/12 14:11
2020/05/12 15:20
退会済みユーザー
2020/05/13 01:33
2020/05/13 01:43