1
1
[ docker-cheat-sheet] ( https://github.com/wsargent/docker-cheat-sheet#dockerfile )
2
2
3
3
4
- ## Dockerfile
4
+ ## alpine
5
5
` nano Dockerfile `
6
6
``` dockerfile
7
- FROM nginx:mainline-alpine3.17-slim
7
+ FROM nginx:stable-alpine3.17-slim
8
+
9
+ RUN apk add bash
10
+
11
+ RUN adduser -S -s /bin/bash -u 1000 -D d_user
12
+
13
+ ENV MY_ENV="asim"
8
14
9
- COPY src /usr/share/nginx/html
15
+ COPY --chown=d_user --chmod=550 . /d_new_dir
10
16
```
11
17
12
18
13
- ## alpine
19
+ ## nginx
14
20
``` dockerfile
15
- FROM nginx:stable -alpine3.17-slim
21
+ FROM nginx:mainline -alpine3.17-slim
16
22
17
23
RUN apk add bash
18
24
19
- COPY . /usr/share/nginx/html
25
+ RUN adduser -S -s /bin/bash -u 1000 -D d_user
26
+
27
+ COPY --chown=d_user --chmod=550 ./src /usr/share/nginx/html
20
28
```
21
29
22
30
@@ -28,9 +36,13 @@ Debian 10: `buster`
28
36
``` dockerfile
29
37
FROM python:3.11-alpine3.18
30
38
39
+ RUN apk add bash
40
+
41
+ RUN adduser -S -s /bin/bash -u 1000 -D d_user
42
+
31
43
RUN pip install django gunicorn
32
44
33
- COPY . /my_app
45
+ COPY --chown=d_user --chmod=550 . /my_app
34
46
35
47
WORKDIR /my_app
36
48
@@ -44,7 +56,7 @@ CMD [ "/my_app/manage.py" ]
44
56
``` dockerfile
45
57
FROM python:3.11-slim-bullseye
46
58
47
- RUN apt-get update && apt-get install -y gcc python3-dev libpq-dev
59
+ RUN apt-get -y update && apt-get -y install gcc python3-dev libpq-dev
48
60
49
61
RUN adduser --system --shell /bin/bash --uid 1000 --group --disabled-password --disabled-login d_user
50
62
@@ -72,128 +84,35 @@ CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]
72
84
```
73
85
74
86
75
- <!-- ======================================================================================== -->
76
- ``` dockerfile
77
- FROM debian:latest
78
-
79
- LABEL multi.label1="value1" multi.label2="value2" other="value3"
80
-
81
- ENV MY_ENV="asim"
82
-
83
- COPY ./deployer.deb /
84
- COPY ./tests/ /tests/
85
-
86
-
87
- RUN apt-get -y update \
88
- && apt-get -y install git dpkg curl sudo python3-venv lsb-release \
89
- && git clone --depth 1 https://github.com/sstephenson/bats.git \
90
- && /bats/install.sh /usr/local \
91
- && dpkg --install /deployer.deb
92
-
93
-
94
- RUN groupadd -r myuser \
95
- && useradd --no-log-init -r -g myuser -G sudo myuser \
96
- && echo "myuser ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/myuser
97
- USER myuser
98
-
99
- USER 1000
100
-
101
- WORKDIR /path/to/workdir
102
-
103
- ENTRYPOINT [ "/bin/sh" , "-c" ]
104
- CMD [ "bats -t /tests " ]
105
- ```
106
-
107
-
108
- ## making php Dockerfile
109
- ` nano ~/my_docker_file/Dockerfile `
87
+ ## COPY from build
110
88
``` dockerfile
111
- FROM busybox:latest
112
- FROM alpine:latest
113
-
114
- FROM php:latest
115
- FROM python:latest
116
- FROM httpd:latest
117
-
118
- FROM debian:latest
119
- FROM ubuntu:latest
89
+ FROM ubuntu:22.04 AS build
120
90
91
+ RUN curl -L https://...
121
92
122
- EXPOSE 80
123
- ENV MY_ENV="asim"
124
-
125
- COPY ./my-php/ /var/www/html
126
- COPY ./my-bash.sh /
93
+ RUN echo "9f99 file.tar.gz" | shasum -a 256 -c
127
94
128
- RUN chmod +x /my-bash.sh
129
- RUN /my-bash.sh
130
-
131
- # RUN >>> runs on build only.
132
- # CMD >>> only one CMD can be run after every startup.
133
- ```
95
+ RUN tar xzf ./file.tar.gz --directory /home/d_dir
134
96
135
97
136
- ## making shell file
137
- ` nano ~/my_docker_file/my-bash.sh `
138
- ``` bash
139
- echo " <br> RUN: $( date ' +%x %X' ) - by $( whoami) - env: $( echo $MY_ENV ) " >> /var/www/html/index.php
140
- ```
141
-
98
+ FROM python:3.11-alpine3.18
142
99
143
- ## making php file
144
- ` mkdir -p ~/my_docker_file/my-php/ `
145
- ` nano ~/my_docker_file/my-php/index.php `
146
- ``` html
147
- <?php echo 'from index.php <br >'; ?>
148
- <p >you will see this if you don't use volumes.</p >
149
- <p >volumes will override this file.</p >
100
+ COPY --from=build --chown=d_user --chmod=500 /home/d_dir /home/d_python
150
101
```
151
102
152
103
153
- ## Build docker image
104
+ ## build - push
154
105
``` bash
155
106
docker image build -t asim3/my_image:latest .
156
107
157
108
158
- sudo docker image build -t asim3/my_php_test:latest ~ /my_docker_file/
159
-
160
- sudo docker image build \
109
+ docker image build \
161
110
-t asim3/my_php_test:mytag \
162
111
-t asim3/my_php_test:1.0 \
163
112
-t asim3/my_php_test:latest \
164
- ~ /my_docker_file/
165
-
166
- # OR
113
+ ./my_docker_file/
167
114
168
- docker image build -t asim3/my_new_image:mytag .
169
115
116
+ docker login
170
117
docker push asim3/my_new_image:mytag
171
118
```
172
-
173
-
174
- ## run
175
- ``` bash
176
- sudo docker container run -d -p 80:80 asim3/my_php_test:mytag
177
-
178
- # with volumes
179
- sudo docker container run -d -p 80:80 \
180
- -v ~ /my_docker_file/my-php/:/var/www/html/ asim3/my_php_test:mytag
181
- ```
182
-
183
-
184
- ## Push Image
185
- Push Image to Docker Hub
186
- > the image name must start with "docker hub username"
187
- ``` bash
188
- sudo docker login
189
-
190
- sudo docker push asim3/my_php_test:mytag
191
- ```
192
-
193
-
194
- ## Build then Push
195
- ``` bash
196
- docker image build -t asim3/my_new_image:latest .
197
-
198
- docker push asim3/my_new_image:latest
199
- ```
0 commit comments