Dockerチュートリアル
https://docs.docker.jp/get-started/part2.html
サンプル Dockerfile
# 親イメージとして公式イメージを使う FROM node:current-slim # 作業用(working)ディレクトリを指定 WORKDIR /usr/src/app # ホスト上のファイルを現在の場所にコピー COPY package.json . # イメージのファイルシステム内でコマンドを実行 RUN npm install # 実行時、コンテナが特定のポートをリッスンするよう Docker に通知 EXPOSE 8080 # コンテナ内で指定したコマンドを実行 CMD [ "npm", "start" ] # 残りのソースコードをホスト上からイメージのファイルシステム上にコピー COPY . .
docker build --tag bulletinboard:1.0 . docker image ls docker run --publish 8000:8080 --detach --name bb bulletinboard:1.0 docker ps -a docker stop bb docker rm --force bb
PHPの公式イメージ
https://docs.docker.jp/get-started/part2.html
サンプル Dockerfile
FROM php:7.4-apache COPY src/ /var/www/html/
docker build -t php_docker . docker run -p 80:80 -d --name php_docker_1 php_docker
これだとsrc/index.phpを修正しても反映されない。
-vでディレクトリをマウント
docker run -p 80:80 -v /vmshare/php_docker/src:/var/www/html -d --name php_docker_1 php_docker
docker exec -it php_docker_1 php -v docker exec -it php_docker_1 /bin/bash
MySQLの公式イメージ
https://hub.docker.com/_/mysql
docker run --name mysql_1 -e MYSQL_ROOT_PASSWORD=root123 -d mysql:8.0 docker exec -it mysql_1 mysql -uroot -proot123
サンプルSQL
create database test; use test create table users (id int, name varchar(10)); insert into users set id=1,name='hoge'; select * from users;
これだとインスタンスを消すとデータも消えるので、共有ディレクトリにする
docker run --name mysql_1 -v /vmshare/mysql_docker/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root123 -d mysql:8.0