forget for get

覚えるために忘れる

Dockerチュートリアル

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